jsp
JSP隐含对象
- 1. JSP隐含对象概述
- 1.1隐含对象功能
- 1.2JSP中的9种隐含对象
- 2. 与输入/输出有关的隐含对象
- 2.1request对象
- 2.1.1获得客户端提交的信息
- 2.1.2处理中文信息
- 2.1.2.1JSP页面中的汉字问题
- 2.1.2.2表单提交的汉字问题
- 2.1.3避免空指针异常
- 2.1.4获取HTML表单数据
- 2.1.5表格
- 2.2response对象
- 2.2.1动态设置MIME类型
- 2.2.2response对象的http头
- 2.2.3response重定向
- 2.2.4response的状态行
- 2.3out对象
- 3. 与属性作用域有关的对象
- 3.1session对象
- 3.1.1session对象的ID标识
- 3.1.2session对象和URL重写
- 3.1.3在会话对象中保存数据
- 3.1.4session对象的生存时间
- 3.2application对象
- 3.2.1application对象的常用方法
- 3.2.2Session 与 Application 区别
- 3.3pageContext对象
- 4. 与Servlet 有关的隐含对象
- 4.1page对象
- 4.2config对象
- 5. 与Error 有关的隐含对象
1. JSP隐含对象概述
- JSP页面的隐含对象就是在JSP页面中不用声明就可以使用的对象。
- 隐含对象是JSP引擎自动创建的Java类实例,它们能与Servlet环境交互。
- 隐含对象可以实现很多功能,如:从客户端获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。
- 隐含对象是由特定的Java类所产生的,在服务器运行时根据情况自动生成,利用隐含对象,可以屏蔽很多Servlet API细节。
1.1隐含对象功能
- 存取out对象打印信息到客户端:
<% out.println(“Hello”); %> - 借助request对象取得客户端输入的参数值:
<% String name=request.getParameter(“name”); %> - 完成页面的重定向:
<% response.sendRedirect(“/h.jsp”);%> - 在错误页面中显示出错信息:
<% String st=exception.getMessage();%>
1.2JSP中的9种隐含对象
- 与输入/输出有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
request(请求对象) | request | javax.servlet.http.HttpServletRequest | 客户端的请求信息 |
response(响应对象) | page | javax.servlet.http.HttpServletResponse | 网页传回客户端的响应 |
out(输出对象) | page | javax.servlet.jsp.JSPWriter | 向客户端浏览器输出数据的数据流 |
- 与属性作用域有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
session(会话对象) | session | javax.servlet.http.HttpSession | 与请求有关的会话 |
application(应用程序对象) | application | javax.servlet.ServletContext | 提供全局的数据,一旦创建就保持到服务器关闭 |
pageContext(页面上下文对象) | page | javax.servlet.jsp.PageContext | JSP页面的上下文,用于访问页面属性 |
- 与Servlet 有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
page(页面对象) | page | java.lang.Object | 类似Java中的this指针,即JSP页面本身 |
config(配置对象) | page | javax.servlet.servletConfig | 用于存取Servlet的配置信息 |
- 与Error 有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
exception(异常对象) | page | java.lang.Throwable | 针对错误网页,捕捉一般网页中未捕捉的异常 |
2. 与输入/输出有关的隐含对象
2.1request对象
- 在JSP页面中,隐含对象request代表的是来自客户端的请求,实现javax.servlet.HttpServletRequest 接口类。通过它可以查看
–请求参数
–请求类型
–请求的HTTP头客户端信息
–储存和取得属性
–其它等 - 取得请求参数的方法
方法 | 说明 |
---|---|
String getParameter(String name) | 取得name 的参数值 |
Enumeration getParameterNames( ) | 取得所有的参数名称 |
String[] getParameterValues(String name) | 取得所有name 的参数值 |
Map getParameterMap( ) | 取得一个参数的Map |
String getHeader(String name) | 取得name 的头的值 |
Enumeration getHeaderNames() | 取得所有的头名称 |
Enumeration getHeaders(String name) | 取得所有名称为name 的头的值 |
int getIntHeader(String name) | 取得name头的整数类型值 |
long getDateHeader(String name) | 取得name头的日期类型值 |
Cookie[] getCookies( ) | 取得与请求有关的cookies |
- 储存和取得属性方法
方法 | 说明 |
---|---|
Object getAttribute(String name) | 取得request对象中的name属性值 |
void setAttribute(String name, Object o) | 设定名字为name的属性值为o |
void removeAttribute(String name) | 取消request对象中的name属性 |
Enumeration getAttributeNames() | 返回request对象所有属性的名字 |
- 其他的方法
方法 | 说明 |
---|---|
String getContentType() | 取得请求数据类型 |
int getContentLength() | 取得请求数据长度 |
String getProtocol() | 取得请求所用的通信协议和版本 |
String getScheme() | 取得使用的URL类型 |
String getRemoteAddr() | 取得发出请求的IP地址 |
String getRemoteHost() | 取得发出请求的完整主机名 |
ServletInputStream getInputStream() | 取得客户端上传数据的数据流 |
String getQueryString() | 取得请求的参数字符串,,HTTP的方法必须为GET |
String getMethod() | 取得GET或POST等 |
StringBuffer getRequestUrl() | 取得请求的URL地址 |
String getContextPath() | 取得Context 路径(即站点名称) |
String getRequestedSessionId() | 取得用户端的Session ID |
String getRequestURI() | 取得请求的URL,但是不包括请求的参数字符串 |
int getRemotePort() | 取得客户的主机端口 |
String getRemoteUser() | 取得客户的名称 |
void setCharacterEncoding(String encoding) | 设定编码格式,用来解决窗体传递中文的问题 |
- request比较重要的方法
getParameter()
getParameterNames()
getParameterValues()
getHeader()
2.1.1获得客户端提交的信息
- 一个文档exa3_1.jsp提交(action)一个表单给tree.jsp页面
- tree.jsp通过**request.getParameter()**接收表单中的客户输入,并将有关信息送回客户端。
2.1.2处理中文信息
2.1.2.1JSP页面中的汉字问题
- 使用page指令:
<%@ page contentType=“text/html;charset=UTF-8”%>
2.1.2.2表单提交的汉字问题
- 客户端和服务器交互过程中,在客户端和服务器用的是UTF-8,而HTTP传输用ISO_8859_1编码,所以服务器端接收到客户端数据时需要将编码转换为UTF-8
- <% String name=request.getParameter(“tt”);
name=new String(name.getBytes(“ISO-8859-1”));%>
或
<% request. setCharacterEncoding (“UTF-8");
String name=request.getParameter(“tt”);%>
2.1.3避免空指针异常
- 由于JSP引擎在首次运行JSP页面时,客户端还没有提交数据,要避免使用空对象
- Java解释器会提示出现空指针异常NullPointerException
- 为了避免使用空对象,在JSP页面中要处理空指针的情况。例如使用如下代码:
String textContent=request.getParameter(“num”);
if(textContent==null){textContent="0";
}
2.1.4获取HTML表单数据
- 表单form主要用于采集和提交用户输入的信息。
- 表单的一般格式为:
<form method=“get|post ” action=“信息提交的目标位置” name=”表单名”>
表单中的标记(数据提交的手段)
</form>
- 表单中的标记
- <input>:输入控件
- <select>:列表框或下拉框<option>: select 元素中的一个选项
- <textarea>:指定多行文本输入控件
- 用单选按钮
<input type=“radio” name=“rad” checked=“java”>
checked为非空标志初始被选中
当一组单选按钮的name值相同,则这组单选按钮只能有一个被选中 - 列表:
有size属性是滚动列表;否则是下拉列表
<select><option>… </option><option>… </option>
</select>
2.1.5表格
<table><TR width=“该行的宽度” border=…><TH width=”单元格宽度” Align="对其方式">单元格中的数据</TH>···<TD width=”单元格宽度” Align="对其方式">单元格中的数据</TD></TR>
<table>
2.2response对象
- 当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器接到请求时会返回HTTP响应(javax.servlet.HttpServletResponse接口类的一个实例)。
- response对象代表的是对客户端的响应,可以通过response对象来组织发送到客户端的数据。
- 设定表头的方法
- 设定响应状态码的方法
- 用来URL 重写的方法
- 其他方法
- response对象中使用较多的方法是:
setContentType()
sendRedirect()
setHeader()
2.2.1动态设置MIME类型
- MIME(Multipurpose Internet Mail Extension protocol,多用途网际邮件扩充协议)
- 在page指令中的contentType属性用来指定response对象响应客户端请求的MIME类型
- contentType属性和MIME类型的对应关系
- page指令只能为contentType指定一个值
- 如果想动态地改变这个属性的值来以各种不同的方式做出响应,使用response对象的setContentType()方法改变contentType的值。
- 一旦该属性值被改变,服务器就将按照新的MIME类型做出响应 。
2.2.2response对象的http头
- response对象可以动态添加和修改相应HTTP头的值,并将这些信息送给客户端
addHeader()方法
setHeader()方法 - 格式:
response.setHeader(“头信息名",“参数”); - 动态设置刷新时间:使客户端显示该页面时,每5秒钟刷新一次。
response.setHeader(“Refresh”,“5”);
setHeader(“Refresh”, “5; URL=”);
response.setHeader(“refresh”, “2;login.jsp”);
2.2.3response重定向
- resp.sendRedirect("/login_error.jsp");
2.2.4response的状态行
- 当服务器响应客户端请求时,它发送的首行被称为状态行。状态行包括3位数字的状态码和对状态码的简单描述。
1xx主要是试验性质的;
2xx表示请求成功;
3xx表示在请求在满足之前应进一步采取的行动;
4xx表示服务器无法满足要求;
5xx服务器出现错误。
2.3out对象
- out对象代表直接向客户端发送数据的对象,通过out对象发送的内容将是浏览器需要显示的文本内容(动态生成HTML文件)。
- javax.servlet.jsp.JspWriter类的实例。
- JSP允许通过page指令的buffer属性调整out对象缓存的大小,甚至允许关闭缓存。
- out对象重要方法
3. 与属性作用域有关的对象
- Cookie :小型文字档案,用来存储有关信息,如购物信息、用户登录信息等。
- 重写URL :把一些标识会话的数据附加到URL后面,服务器能够把该会话标识和它所保存的会话数据关联起来。
- 隐藏表单域 :通过表单的隐藏域维持会话
- HttpSession API :Servlet提供的方案
- HttpSession API是一个基于Cookie或者URL重写机制的高级会话状态跟踪接口。
如果浏览器支持Cookie,则使用Cookie
如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL重写方法。
3.1session对象
- 会话:从一个客户打开浏览器连接到服务器开始,到客户关闭浏览器离开服务器结束或超时。
- session对象是javax.servlet.http.HttpSession类的实例。
- session对象使同一用户在访问Web站点时多个页面间共享信息。
- session对象的主要方法
3.1.1session对象的ID标识
- 客户首次访问服务器上的JSP页面
- JSP引擎产生session对象,分配给它一个String类型的ID
- 将session ID发送到客户端存入Cookie中
- session对象和客户端之间建立一一对应关系
- 客户在该服务器不同网页间转换或从其他服务器回到该服务器时,不分配给客户新的session,
- 直到客户关闭浏览器或强制使session无效,分配给客户的session对象被取消。
3.1.2session对象和URL重写
- 如果客户端不支持Cookie,服务器无法将session ID写到客户端,也无法识别同一个客户端。
- 解决该问题的有效方法是URL重写。
3.1.3在会话对象中保存数据
- 保存和获得session对象中的数据;session对象提供一个内建的数据结构,保存任意数量的键-值对。
getAttribute()返回类型是Object或null,需要类型转换 。
setAttribute(Object key, Object value) 的参数类型是对象。 - 要在JSP中使用session对象,page指令的属性session不能设为false,否则使用session时会产生编译错误
3.1.4session对象的生存时间
- 创建:第一次执行request.getSession()时创建
- Session的销毁只有两种情况:
第一:session调用了 session.invalidate()方法
第二:前后两次请求超出了session指定的生命周期时间
其中Session的生命周期时间可以在web.xml配置. 默认30分钟 在web.xml可以做如下配置:
<session-config><session-timeout>5</session-timeout>
</session-config>
- 一般来说,下列情况会使会话结束:
由于网络故障套接字删除
关闭浏览器
服务器关闭重启
会话超时和主动撤销会话。
3.2application对象
- application对象负责提供应用程序在服务器中运行时的一些全局信息
- 服务器启动时就创建一个application对象
- 客户在该服务器的各个页面之间链接时,application对象都是同一个,直到服务器关闭
3.2.1application对象的常用方法
3.2.2Session 与 Application 区别
-
服务的对象不一样
在同一个浏览器窗口中,无论向服务器发送多少请求,session 对象只有一个;当 application 对象没有被销毁的时候,所有用户都可以享用该 application 对象。 -
性质不一样
session是会话变量,只要同一个浏览器没有被关闭,session对象就会存在;application它类似于系统的全局变量。 -
使用的人不一样
一个浏览器只能创建一个 session 变量;所有浏览器用户都可以使用服务器上的 application 对象。 -
保存的内容不一样
session 对象可以存储或者读取客户的相关信息;application 对象可以用于保存所有程序中的公有数据。 -
变量的生命周期不一样
可以通过编写程序进行修改这个 session 的生命周期的时间;application 的生命周期是最长的。
3.3pageContext对象
- pageContext对象主要用来管理页面的属性,描述JSP文档的运行环境,提供对所有其他隐含对象及其属性的访问。
4. 与Servlet 有关的隐含对象
- 与Servlet 有关的隐含对象有两个: page和config。
page对象表示Servlet本身;
config对象则存放Servlet的初始参数值。
4.1page对象
- 它是this的同义词,表示JSP页面本身,是Servlet类的一个实例,可以调用Servlet中的任何方法。
- 它实现javax.servlet.jsp.HttpJspPage接口。
4.2config对象
- config对象是 javax.servlet.servletConfig 接口的实例,存储Servlet配置对象。其重要方法如下表所示:
5. 与Error 有关的隐含对象
- 这类的隐含对象:exception 对象。
- exception对象代表了JSP文件运行时所产生的异常对象,目的是在JSP内处理错误。
- 此对象只能在设置下述属性的JSP文件中直接使用
<%@ page isErrorPage=“true ”%>
jsp
JSP隐含对象
- 1. JSP隐含对象概述
- 1.1隐含对象功能
- 1.2JSP中的9种隐含对象
- 2. 与输入/输出有关的隐含对象
- 2.1request对象
- 2.1.1获得客户端提交的信息
- 2.1.2处理中文信息
- 2.1.2.1JSP页面中的汉字问题
- 2.1.2.2表单提交的汉字问题
- 2.1.3避免空指针异常
- 2.1.4获取HTML表单数据
- 2.1.5表格
- 2.2response对象
- 2.2.1动态设置MIME类型
- 2.2.2response对象的http头
- 2.2.3response重定向
- 2.2.4response的状态行
- 2.3out对象
- 3. 与属性作用域有关的对象
- 3.1session对象
- 3.1.1session对象的ID标识
- 3.1.2session对象和URL重写
- 3.1.3在会话对象中保存数据
- 3.1.4session对象的生存时间
- 3.2application对象
- 3.2.1application对象的常用方法
- 3.2.2Session 与 Application 区别
- 3.3pageContext对象
- 4. 与Servlet 有关的隐含对象
- 4.1page对象
- 4.2config对象
- 5. 与Error 有关的隐含对象
1. JSP隐含对象概述
- JSP页面的隐含对象就是在JSP页面中不用声明就可以使用的对象。
- 隐含对象是JSP引擎自动创建的Java类实例,它们能与Servlet环境交互。
- 隐含对象可以实现很多功能,如:从客户端获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。
- 隐含对象是由特定的Java类所产生的,在服务器运行时根据情况自动生成,利用隐含对象,可以屏蔽很多Servlet API细节。
1.1隐含对象功能
- 存取out对象打印信息到客户端:
<% out.println(“Hello”); %> - 借助request对象取得客户端输入的参数值:
<% String name=request.getParameter(“name”); %> - 完成页面的重定向:
<% response.sendRedirect(“/h.jsp”);%> - 在错误页面中显示出错信息:
<% String st=exception.getMessage();%>
1.2JSP中的9种隐含对象
- 与输入/输出有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
request(请求对象) | request | javax.servlet.http.HttpServletRequest | 客户端的请求信息 |
response(响应对象) | page | javax.servlet.http.HttpServletResponse | 网页传回客户端的响应 |
out(输出对象) | page | javax.servlet.jsp.JSPWriter | 向客户端浏览器输出数据的数据流 |
- 与属性作用域有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
session(会话对象) | session | javax.servlet.http.HttpSession | 与请求有关的会话 |
application(应用程序对象) | application | javax.servlet.ServletContext | 提供全局的数据,一旦创建就保持到服务器关闭 |
pageContext(页面上下文对象) | page | javax.servlet.jsp.PageContext | JSP页面的上下文,用于访问页面属性 |
- 与Servlet 有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
page(页面对象) | page | java.lang.Object | 类似Java中的this指针,即JSP页面本身 |
config(配置对象) | page | javax.servlet.servletConfig | 用于存取Servlet的配置信息 |
- 与Error 有关
对象 | 有效范围 | 所属的类 | 说明 |
---|---|---|---|
exception(异常对象) | page | java.lang.Throwable | 针对错误网页,捕捉一般网页中未捕捉的异常 |
2. 与输入/输出有关的隐含对象
2.1request对象
- 在JSP页面中,隐含对象request代表的是来自客户端的请求,实现javax.servlet.HttpServletRequest 接口类。通过它可以查看
–请求参数
–请求类型
–请求的HTTP头客户端信息
–储存和取得属性
–其它等 - 取得请求参数的方法
方法 | 说明 |
---|---|
String getParameter(String name) | 取得name 的参数值 |
Enumeration getParameterNames( ) | 取得所有的参数名称 |
String[] getParameterValues(String name) | 取得所有name 的参数值 |
Map getParameterMap( ) | 取得一个参数的Map |
String getHeader(String name) | 取得name 的头的值 |
Enumeration getHeaderNames() | 取得所有的头名称 |
Enumeration getHeaders(String name) | 取得所有名称为name 的头的值 |
int getIntHeader(String name) | 取得name头的整数类型值 |
long getDateHeader(String name) | 取得name头的日期类型值 |
Cookie[] getCookies( ) | 取得与请求有关的cookies |
- 储存和取得属性方法
方法 | 说明 |
---|---|
Object getAttribute(String name) | 取得request对象中的name属性值 |
void setAttribute(String name, Object o) | 设定名字为name的属性值为o |
void removeAttribute(String name) | 取消request对象中的name属性 |
Enumeration getAttributeNames() | 返回request对象所有属性的名字 |
- 其他的方法
方法 | 说明 |
---|---|
String getContentType() | 取得请求数据类型 |
int getContentLength() | 取得请求数据长度 |
String getProtocol() | 取得请求所用的通信协议和版本 |
String getScheme() | 取得使用的URL类型 |
String getRemoteAddr() | 取得发出请求的IP地址 |
String getRemoteHost() | 取得发出请求的完整主机名 |
ServletInputStream getInputStream() | 取得客户端上传数据的数据流 |
String getQueryString() | 取得请求的参数字符串,,HTTP的方法必须为GET |
String getMethod() | 取得GET或POST等 |
StringBuffer getRequestUrl() | 取得请求的URL地址 |
String getContextPath() | 取得Context 路径(即站点名称) |
String getRequestedSessionId() | 取得用户端的Session ID |
String getRequestURI() | 取得请求的URL,但是不包括请求的参数字符串 |
int getRemotePort() | 取得客户的主机端口 |
String getRemoteUser() | 取得客户的名称 |
void setCharacterEncoding(String encoding) | 设定编码格式,用来解决窗体传递中文的问题 |
- request比较重要的方法
getParameter()
getParameterNames()
getParameterValues()
getHeader()
2.1.1获得客户端提交的信息
- 一个文档exa3_1.jsp提交(action)一个表单给tree.jsp页面
- tree.jsp通过**request.getParameter()**接收表单中的客户输入,并将有关信息送回客户端。
2.1.2处理中文信息
2.1.2.1JSP页面中的汉字问题
- 使用page指令:
<%@ page contentType=“text/html;charset=UTF-8”%>
2.1.2.2表单提交的汉字问题
- 客户端和服务器交互过程中,在客户端和服务器用的是UTF-8,而HTTP传输用ISO_8859_1编码,所以服务器端接收到客户端数据时需要将编码转换为UTF-8
- <% String name=request.getParameter(“tt”);
name=new String(name.getBytes(“ISO-8859-1”));%>
或
<% request. setCharacterEncoding (“UTF-8");
String name=request.getParameter(“tt”);%>
2.1.3避免空指针异常
- 由于JSP引擎在首次运行JSP页面时,客户端还没有提交数据,要避免使用空对象
- Java解释器会提示出现空指针异常NullPointerException
- 为了避免使用空对象,在JSP页面中要处理空指针的情况。例如使用如下代码:
String textContent=request.getParameter(“num”);
if(textContent==null){textContent="0";
}
2.1.4获取HTML表单数据
- 表单form主要用于采集和提交用户输入的信息。
- 表单的一般格式为:
<form method=“get|post ” action=“信息提交的目标位置” name=”表单名”>
表单中的标记(数据提交的手段)
</form>
- 表单中的标记
- <input>:输入控件
- <select>:列表框或下拉框<option>: select 元素中的一个选项
- <textarea>:指定多行文本输入控件
- 用单选按钮
<input type=“radio” name=“rad” checked=“java”>
checked为非空标志初始被选中
当一组单选按钮的name值相同,则这组单选按钮只能有一个被选中 - 列表:
有size属性是滚动列表;否则是下拉列表
<select><option>… </option><option>… </option>
</select>
2.1.5表格
<table><TR width=“该行的宽度” border=…><TH width=”单元格宽度” Align="对其方式">单元格中的数据</TH>···<TD width=”单元格宽度” Align="对其方式">单元格中的数据</TD></TR>
<table>
2.2response对象
- 当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器接到请求时会返回HTTP响应(javax.servlet.HttpServletResponse接口类的一个实例)。
- response对象代表的是对客户端的响应,可以通过response对象来组织发送到客户端的数据。
- 设定表头的方法
- 设定响应状态码的方法
- 用来URL 重写的方法
- 其他方法
- response对象中使用较多的方法是:
setContentType()
sendRedirect()
setHeader()
2.2.1动态设置MIME类型
- MIME(Multipurpose Internet Mail Extension protocol,多用途网际邮件扩充协议)
- 在page指令中的contentType属性用来指定response对象响应客户端请求的MIME类型
- contentType属性和MIME类型的对应关系
- page指令只能为contentType指定一个值
- 如果想动态地改变这个属性的值来以各种不同的方式做出响应,使用response对象的setContentType()方法改变contentType的值。
- 一旦该属性值被改变,服务器就将按照新的MIME类型做出响应 。
2.2.2response对象的http头
- response对象可以动态添加和修改相应HTTP头的值,并将这些信息送给客户端
addHeader()方法
setHeader()方法 - 格式:
response.setHeader(“头信息名",“参数”); - 动态设置刷新时间:使客户端显示该页面时,每5秒钟刷新一次。
response.setHeader(“Refresh”,“5”);
setHeader(“Refresh”, “5; URL=”);
response.setHeader(“refresh”, “2;login.jsp”);
2.2.3response重定向
- resp.sendRedirect("/login_error.jsp");
2.2.4response的状态行
- 当服务器响应客户端请求时,它发送的首行被称为状态行。状态行包括3位数字的状态码和对状态码的简单描述。
1xx主要是试验性质的;
2xx表示请求成功;
3xx表示在请求在满足之前应进一步采取的行动;
4xx表示服务器无法满足要求;
5xx服务器出现错误。
2.3out对象
- out对象代表直接向客户端发送数据的对象,通过out对象发送的内容将是浏览器需要显示的文本内容(动态生成HTML文件)。
- javax.servlet.jsp.JspWriter类的实例。
- JSP允许通过page指令的buffer属性调整out对象缓存的大小,甚至允许关闭缓存。
- out对象重要方法
3. 与属性作用域有关的对象
- Cookie :小型文字档案,用来存储有关信息,如购物信息、用户登录信息等。
- 重写URL :把一些标识会话的数据附加到URL后面,服务器能够把该会话标识和它所保存的会话数据关联起来。
- 隐藏表单域 :通过表单的隐藏域维持会话
- HttpSession API :Servlet提供的方案
- HttpSession API是一个基于Cookie或者URL重写机制的高级会话状态跟踪接口。
如果浏览器支持Cookie,则使用Cookie
如果浏览器不支持Cookie或者Cookie功能被关闭,则自动使用URL重写方法。
3.1session对象
- 会话:从一个客户打开浏览器连接到服务器开始,到客户关闭浏览器离开服务器结束或超时。
- session对象是javax.servlet.http.HttpSession类的实例。
- session对象使同一用户在访问Web站点时多个页面间共享信息。
- session对象的主要方法
3.1.1session对象的ID标识
- 客户首次访问服务器上的JSP页面
- JSP引擎产生session对象,分配给它一个String类型的ID
- 将session ID发送到客户端存入Cookie中
- session对象和客户端之间建立一一对应关系
- 客户在该服务器不同网页间转换或从其他服务器回到该服务器时,不分配给客户新的session,
- 直到客户关闭浏览器或强制使session无效,分配给客户的session对象被取消。
3.1.2session对象和URL重写
- 如果客户端不支持Cookie,服务器无法将session ID写到客户端,也无法识别同一个客户端。
- 解决该问题的有效方法是URL重写。
3.1.3在会话对象中保存数据
- 保存和获得session对象中的数据;session对象提供一个内建的数据结构,保存任意数量的键-值对。
getAttribute()返回类型是Object或null,需要类型转换 。
setAttribute(Object key, Object value) 的参数类型是对象。 - 要在JSP中使用session对象,page指令的属性session不能设为false,否则使用session时会产生编译错误
3.1.4session对象的生存时间
- 创建:第一次执行request.getSession()时创建
- Session的销毁只有两种情况:
第一:session调用了 session.invalidate()方法
第二:前后两次请求超出了session指定的生命周期时间
其中Session的生命周期时间可以在web.xml配置. 默认30分钟 在web.xml可以做如下配置:
<session-config><session-timeout>5</session-timeout>
</session-config>
- 一般来说,下列情况会使会话结束:
由于网络故障套接字删除
关闭浏览器
服务器关闭重启
会话超时和主动撤销会话。
3.2application对象
- application对象负责提供应用程序在服务器中运行时的一些全局信息
- 服务器启动时就创建一个application对象
- 客户在该服务器的各个页面之间链接时,application对象都是同一个,直到服务器关闭
3.2.1application对象的常用方法
3.2.2Session 与 Application 区别
-
服务的对象不一样
在同一个浏览器窗口中,无论向服务器发送多少请求,session 对象只有一个;当 application 对象没有被销毁的时候,所有用户都可以享用该 application 对象。 -
性质不一样
session是会话变量,只要同一个浏览器没有被关闭,session对象就会存在;application它类似于系统的全局变量。 -
使用的人不一样
一个浏览器只能创建一个 session 变量;所有浏览器用户都可以使用服务器上的 application 对象。 -
保存的内容不一样
session 对象可以存储或者读取客户的相关信息;application 对象可以用于保存所有程序中的公有数据。 -
变量的生命周期不一样
可以通过编写程序进行修改这个 session 的生命周期的时间;application 的生命周期是最长的。
3.3pageContext对象
- pageContext对象主要用来管理页面的属性,描述JSP文档的运行环境,提供对所有其他隐含对象及其属性的访问。
4. 与Servlet 有关的隐含对象
- 与Servlet 有关的隐含对象有两个: page和config。
page对象表示Servlet本身;
config对象则存放Servlet的初始参数值。
4.1page对象
- 它是this的同义词,表示JSP页面本身,是Servlet类的一个实例,可以调用Servlet中的任何方法。
- 它实现javax.servlet.jsp.HttpJspPage接口。
4.2config对象
- config对象是 javax.servlet.servletConfig 接口的实例,存储Servlet配置对象。其重要方法如下表所示:
5. 与Error 有关的隐含对象
- 这类的隐含对象:exception 对象。
- exception对象代表了JSP文件运行时所产生的异常对象,目的是在JSP内处理错误。
- 此对象只能在设置下述属性的JSP文件中直接使用
<%@ page isErrorPage=“true ”%>