JAVAweb复习-JSP
2021/7/2 17:23:40
本文主要是介绍JAVAweb复习-JSP,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.JSP基本概念和基本构成
JSP 是Java Server Pages 的缩写,是由 Sun 公司倡导、许多公司参与,于1999 年推出的一种动态网页技术标准
基本构成:
2.jsp指令标签
JSP指令标签一共有3种:page指令,include指令,taglib指令。
语法如下:
<%@ page 属性= “值” %> <%@ include 属性= “值” %> <%@ taglib 属性= “值” %>
注意:“<%”与之后的“@”之间不能有空格。
(1)page指令
page指令:page 指令用来定义整个JSP页面的一些属性的值
用一个page指令指定多个属性的值
<%@ page 属性1=“值1” 属性2=“值2” …%>
- 例如:
<%@ page import="java.util.*" ,"java.io.*" , "java.awt.*" %>
- 当你为import 指定多个属性值时,JSP 引擎把JSP 页面转译成的java 文件中会有如下的import 语句:
import java.util.*; import java.io.*; import java.awt.*;
用多个page指令指定多个属性的值
<%@ page 属性1="值1"%> <%@ page 属性2="值2"%>
-
例如,我们可以用page指令定义JSP 页面的contentType属性的值是“text/html;charset= utf-8 ”,这样,我们的页面就可以显示中文。如,
<%@ page contentType="text/html;charset= utf-8 " %>
-
其中, 属性值总是用单引号或引号双号括起来
-
可以使用多个page 指令给属性import 几个值,但其它属性只能使用一次page 指令指定该属性一个值。如,
<%@ page contentType="text/html;charset=GB2312" %> <%@ page import="java.util.*" %> <%@ page import="java.util.*", "java.awt.*" %>
- 下列用法是错误的
<%@ page contentType="text/html;charset=GB2312" %> <%@ page contentType="text/html;charset=GB2312" %>
注:page 指令的作用对整个页面有效,与其书写的位置无关,但习惯把page 指令写在JSP 页面的最前面
page指令常用属性
language、import、contentType、session、buffer、auotFlush、isThreadSafe 、info、errorPage、iserrorPage
<%@ page language="java" %> <%@ page import="java.lang.*","javax.servlet.*","javax.servlet.jsp.*","javax.servlet.http.*" %> <%@ page contentType="text/html ; charset=ISO-8859-1" %> <%@ page buffer= "24kb" %> <%@ page info= "this is a sample" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
(2)include指令
include 指令用于在 JSP 页面中静态包含一个文件
include 指令的语法如下:
<%@ include file="包含文件的路径与名称" %>
(3)taglib指令
用于导入标签库,taglib 指令的语法如下:
<%@taglib uri="标签库uri" prefix="前缀" %>
uri属性:用来指定标签库的存放位置。
prefix属性:指定该标签库必须使用的前缀。
如:
<%@taglib uri="/struts-tags" prefix="s" %>
3.jsp动作标签
动作标签是一种特殊的标签,它影响JSP 运行时的功能。JSP中6个动作为:
1.Include、2.Forward、3.UseBean、 4GetProperty、 5.SetProperty、 6.Plugin 7.Param
JSP动作的语法为:
<jsp:动作名称 属性1="属性1的值1" 属性2="属性2的值2"……/>
(1)include动作
Include动作的语法如下:
<jsp:include page="包含文件的路径与名称"/> <jsp:include page="a.jsp" />
(2)forward动作
forword动作的语法如下
<jsp:forward page="跳转文件的路径与名称"/> <jsp:forward page='b.jsp'></jsp:forward>
(3)useBean动作
useBean动作的语法如下
<jsp:useBean id="bean的名字" class="bean类路径与类名" scope="可用范围"/>
创建JavaBean有两种方式:
使用嵌入java代码的方式,其代码如下: <% reg.Register register=new reg.Register(); %> 使用useBean标签的方式,其代码如下: <jsp:useBean id="register" class="reg.Register" scope="request"/>
(4)getProperty与setProperty动作
getProperty与setProperty动作的语法如下
<jsp:setProperty name="bean的名字" property="属性名" value="值"/> <jsp:getProperty name=”bean的名字” propertry="属性名"/>
(5)param与params动作
param动作的语法如下
<jsp:param name= “名字” value=”指定给param 的值”> <jsp:include page="a.jsp" > <jsp:param value="this is param" name="id"/> </jsp:include>
4.jsp内置对象
(1)request对象的常用方法
String getParameter(String name) - 根据键去获取request中存放对象的值。参数name就是键 String[ ] getParameterValues (String name) - 根据页面表单中的输入控件名称获取对应的多个值,一般用于获取复选框、复选列表框等输入控件,获取里边输入的多个值;参数name表示输入控件的名称
request对象的其他方法
- getProtocol() 获取客户向服务器提交信息所使用的通信协议,比如HTTP/1.1等。
- getServletPath() 获取客户请求的JSP 页面文件的目录。
- getContentLength() 获取客户提交的整个信息的长度。
- getMethod() 获取客户提交信息的方式,比如:post 或get。
- getHeader(String s) 获取HTTP 头文件中由参数s指定的头名字的值,一般来说s参数可取的头名有:accept、 referer 、 accept-language 、content-type、accept-encoding、 user-agent 、host、 content-length 、 connection 、cookie 等,比如,s 取值user-agent将获取客户的浏览器的版本号等信息。
- getHeaderNames() 获取头名字的一个枚举。
- getHeaders(String s) 获取头文件中指定头名字的全部值的一个枚举。
- getRemoteAddr() 获取客户的IP 地址。
- getRemoteHost() 获取客户机的名称(如果获取不到,就获取IP 地址)。
- getServerName() 获取服务器的名称。
- getServerPort() 获取服务器的端口号。
- getParameterNames() 获取客户提交的信息体部分中name 参数值的一个枚举。
(2)response对象的常用方法
void setContentType (String name) 设置作为响应生成的内容的类型和字符编码 void sendRedirect (String name) 发送一个响应给浏览器,指示其应请求另一个URL
(3)session对象的常用方法
void setAttribute(String name,Object value) 以键/值的方式,将一个对象的值存放到session 中,参数name是键,表示一个对象的值保存在session中的时候给该值取的名字;参数value是对象名。 Object getAttribute(String name) 根据键去获取session中存放对象的值。参数name就是键,它来源于setAttribute方法中的参数name。
(4)application对象的常用方法
public void setAttribute(String name ,Object obj); 以键/值的方式,将一个对象的值存放到application中,参数name是键,表示一个对象的值保存在application中的时候给该值取的名字; 参数obj是对象名。如果添加的两个对象的关键字相同,则先前添加对象被清除。 public Object getAttibue(String name); 根据键去获取session中存放对象的值。参数name就是键,它来源于setAttribute方法中的参数name。 由于任何对象都可以添加到application对象中,因此用该方法取回对象时,应强制转化为原来的类型。
(5)out对象的常用方法
out.print(Boolean),out.println(boolean) 用于输出一个布尔值。 out.print(char),out.println(char) 输出一个字符。 out.print(double),out.println(double) 输出一个双精度的浮点数。 out.print(fload),out.println(float) 用于输出一个单精度的浮点数。 out.print(long),out.println(long) 输出一个长整型数据。 out.print(String),out.println(String) 输出一个字符串对象的内容。
5.forward和redirect
request.getRequestDispatcher("new.jsp").forward(request, response); //转发到new.jsp response.sendRedirect("new.jsp"); //重定向到new.jsp
区别:
1.数据共享方面:
- forward:转发页面和转发到的页面可以共享request里面的数据
- redirect:不能共享数据
2.地址栏显示方面: - forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
- redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL.
3.本质区别:
转发是服务器行为,重定向是客户端行为
6.Include指令和Include动作的区别:
在视觉效果上看,<%@ include %>指令标签,与<jsp:include />动作标签没有什么太大的差别
区别:
- 指令执行速度相对较快,灵活性较差(只编译一个文件,但是一旦有一个文件发生变化,两个文件都要重新编译) 动作执行速度相对较慢,灵活性较高
- 在使用时,如果是静态页面,则使用Include指令;如果是动态页面,则使用Include动作。
这篇关于JAVAweb复习-JSP的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南