JSP内置对象 《Java Web开发从入门到实战》第四章
内置对象:在JSP页面中不需要声明和实例化,可以直接在Java程序片和Java表达式部分使用的对象。
分类·:
- 与Input/Output有关的内置对象
- 与Context有关的内置对象
- 与Servlet有关的对象
- 与Error有关的内置对象
- 与Input/Output有关的内置对象1
- request对象:客户端对服务器端发送的请求
- response对象:服务器对客户端的响应
- out对象:把处理结果输出到客户端
- 与Context有关的内置对象2
- session对象:浏览器与服务器会话的上下文环境
- application对象:应用程序(Web应用)的上下文环境
- pageContext对象:当前JSP页面的上下文环境
- 与Servlet有关的对象3
- page对象:JSP文件转换为Java文件后的Servlet对象
- config对象:JSP文件转换为Java文件后的Servlet的ServletConfig对象
- 与Error有关的内置对象4
- exception对象:党JSP网页有错误时将产生异常,该对象用来处理这个异常
request对象5
常用方法
- 使用·request对象获取客户端提交的信息
- String getParameter(String name)
- String[] getParameterValues(String name)
- NullPointerException异常
使用request对象存取数据
- setAttribute(String key,Object obj)方法6
- Object getAttribute(String key)方法:获取请求域(例如forword转发)中的关键字为key的对象(属性值)。
- 在实际工程中,request对象经常用于存储、传递本次请求的处理结果。
中文乱码问题
- request.setCharacterEncoding(String code)方法设置统一字符编码
response对象7
动态改变contentType属性值
- JSP页面用page指令标记设置contentType属性值
- 在page指令中只能为contentType属性指定一个值
- response。setContentType(String s)可以重新设置contentType属性值
设置响应表头
- response.setHeader(String name,String value)设置指定名字的HTTP文件头值,以此操作HTTP文件头
- 每3s刷新页面:response.serHeader(“refresh”,“3”);
- 3s后跳转页面:response.serHeader(“refresh”,“3;url=another.jsp”);
使用response对象重定向
- response.sendRedirect(String url):将客户端引导至另一个页面,浏览器地址栏出现的重定向页面的URL为绝对路径。
- forward动作标记与response对象调用sendRedirect()的比较:
- forward为服务器端跳转,浏览器的地址栏不变;sendRedirect()为客户端跳转,浏览器的地址栏变为新页面的URL。
- 执行到forward标记出现处停止当前JSP页面的继续执行,而转向标记中page属性指定的页面;sendRedirect()在所有代码执行完毕后再跳转。
- 使用forward、request请求信息能够保留到下一个页面;使用sendRedirect()不能保留request请求信息。
-
- forward传递参数格式:
<jsp:forward page="info.jsp">
<jsp:param name="no" value="001"/>
<jsp:param name="age" value="18"/>
</jsp:forward>
response对象的sendRedirect()传递参数格式:
response.sendRedirect("info.jsp?sno=001&sage=18");
out对象9
常用方法
session对象10
- 浏览器与Web服务器之间使用HTTP协议11进行通信。
- Web服务器使用内置对象session来存放有关连接的信息。
- session对象指的是客户端与服务器端的一次会话,从客户端连到服务器端的一个Web应用程序开始,直到客户端与服务器端断开为止。
session对象的ID
- Web服务器为每个用户自动创建一个session对象,为每个session对象分配一个唯一标识的String类型的sessionID。
- 每个用户对应一个session对象,不同用户的session对象不同。
- session.getId()方法获取session对象的ID。
- 一个用户在同一个Web服务中只有一个session对象,当用户访问相同Web服务的其他页面时,Web服务器不会再重新分配session对象,知道关闭浏览器或session对象达到生存期限。而当用户重新打开浏览器,Web服务器又重新创建新的session对象。
- 用户在多个不同的Web服务中对应的session不同,一个Web服务对应一个session对象。
使用session对象存取数据12
- 处理数据的方法
- public void setAttribute(String key,Object obj):将obj指定对象存到session对象中,key为所保存的对象指定一个关键字,若两个对象关键字相同,先保存的对象被清除。
- public Object getAttribute(String key):获取session对象中关键字为key的对象
- public void removeAttribute(String key):从session中删除关键字key对应的对象
- public Enumeration getAttributeNames() :产生枚举对象,使用nextElements()遍历session中各个对象所对应的关键字
session对象的生命周期
- 依赖因素
- 用户是否关闭浏览器
- session对象是否调用invalidate()方法
- session对象是否达到设置的最长“发呆”时间13
- 与session对象生命周期相关的方法:
- 修改最长“发呆”时间:
- (1)Tomcat安装路径->conf->web.xml->30,单位(分)
- (2)session.setMaxInactiveInterval(int time),单位(秒)
application对象14
- 客户端浏览不同的Web服务,将产生不同的的application对象。保存在application对象中的数据不仅可以跨页面分享,还可以由所有用户共享。
- 有些Web服务器不能直接使用application对象,必须使用父类ServletContext声明这个对象,然后使用getServletContext()方法为application对象进行实例化。
使用application对象存取数据
- 处理数据的方法:
- public void setAttribute(String key,Object obj):将obj指定对象存到application对象中,key为所保存的对象指定一个关键字,若两个对象关键字相同,先保存的对象被清除。
- public Object getAttribute(String key):获取application对象中关键字为key的对象
- public void removeAttribute(String key):从application中删除关键字key对应的对象
- public Enumeration getAttributeNames() :产生枚举对象,使用nextElements()遍历application中各个对象所对应的关键字
pageContext对象15
-
pageContext对象可以访问当前JSP页面的所有内置对象
-
pageContext对象获取内置对象的方法:
page对象16
config对象17
exception对象18
- JSP页面使用条件:
- page指令的isErrorPage设置为true,否则无法编译。
JSP的四种作用域
-
对象的作用域:对象的生命周期和可访问性。
- 页面域(page scope)
- 生命周期:页面执行期间,存储在页面域中得对象只能在它所在的页面被访问。
- 内置对象:pageContext
- 请求域(request scope)
- 生命周期:一次请求过程,包括请求被转发(forward)或者被包含(include)的情况,存储在请求域中的对象只有在此次请求中才可以被访问。
- 内置对象:request
- 会话域(session scope)
- 生命周期:某个客户端与服务器所连接的时间,客户端在第一次访问服务器时创建会话,在会话过期或用户主动退出后会话结束,存储在会话域中的对象在整个会话期间(可以包含对此请求)都可以被访问。
- 内置对象:session
- 应用域(application)
- 生命周期:从服务器开始执行服务到服务器关闭为止,其生命周期时4个作用域时间最长的,存储在应用域中的对象在整个应用程序运行期间可以被所有JSP和Servlet共享访问。
- 内置对象:application
- 页面域(page scope)
-
以上四个内置对象都可以通过setAttribute(String key,Object obj)方法存储数据,getAttribute(String key)获取数据。
主要用来作为客户端和服务器间的通信桥梁 ↩︎
Context(上下文) ↩︎
- ↩︎
- ↩︎
request对象的类型为javax.servlet.http.HttpServletRequest ↩︎
将参数obj指定的对象保存到request对象中,key为所保存的对象指定一个关键字。若保存的两个对象的关键字相同,则先保存的对象将被清除。 ↩︎
request对象对请求信息进行封装,与request对象对应的是response对象。response对象的类型为javax.servlet.http.HttpServletResponse,对客户端的请求做出动态响应8。 ↩︎
动态改变contentType属性值、设置响应表头、response重定向等。 ↩︎
out对象的类型为javax.servlet.jsp.JspWriter,是一个输出流,用来向客户端浏览器输出数据。 ↩︎
session对象是浏览器与服务器会话上下文环境,它的类型为javax.servlet.http.HttpSession。 ↩︎
无状态协议,客户端向服务器发送请求(request),服务器返回响应(response),连接关闭,服务器端不保留连接相关信息。 ↩︎
可以保存用户在访问某个Web服务期间的数据 ↩︎
用户对某个Web服务发出的两次请求之间的时间。Tomcat允许用户最长“发呆”时间为30分钟。 ↩︎
Web服务器启动后产生唯一的内置对象application,实现application对象实现了javax.servlet.ServletContext接口。任何用户在访问同一Web服务的各个页面时共享一个application对象,指定服务器关闭。application对象对所有用户都是相同的,任何用户对该对象存储的数据进行操作都会影响到其他用户。 ↩︎
即页面上下文对象,表示当前页面运行环境,用于获取当前JSP页面信息,作用范围为当前JSP页面。pageContext对象的类型为javax.servlet.jsp.HttpJspPage.PageContext。 ↩︎
一个与Servlet有关的内置对象,表示JSP文件转译后的Servlet对象,代表JSP页面本身,即this。可调用Servlet类所定义的方法。page对象的类型为javax.servlet.jsp.HttpJspPage。 ↩︎
页面配置对象,表示当前JSP页面转译后的Servlet的ServletConfig对象,存储一些初始数据。实现了java.servlet.ServletConfig接口。 ↩︎
与Error有关的内置对象,表示JSP页面产生的异常。 ↩︎