JSP中各种内置对象
JSP中各种内置对象
web交互的最基本单位是http请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。作用域解释如下:
1.application:服务器启动到停止的这段时间
2.session:HTTP会发开始到结束的这段时间
3.request:HTTP请求开始到结束的这段时间
4.page:当前页面从打开到关闭这段时间
一.application作用域
(1)获取application对象的副本
1.在JSP中直接使用application以代表application对象
2.通过ServletConfig接口
使用ServletConfig接口可以间接获取application对象,但是这个application对象的名称不能同样为application。因为application是JSP引擎创建的默认的application对象的副本,不可以被覆盖。可以通过调用getServletContext()方法返回一个ServletContext接口的对象,也就是application对象的一个副本.
3.使用pageContext对象获取application对象
pageContext对象的getServletContext()同样返回一个application对象的副本.
(2)
1.Object getAttribute(String name) :从application中获取信息。
2.void setAttribute(String name,Object value) :向application中输入信息。
3.Enumeration getAttributeNames() :返回所有与当前的application对象绑定在一起的参数或者java对象的名字。
4.void removeAttribute(String name) :通过该方法,我们可以使某个参数或者java对象与application对象解除绑定关系。
5.getServerInfo() :该方法可以获得当前服务器的详细信息,不同的服务器返回的信息格式不一样。
6.log(String msg) :该方法往往用于往服务器的log文件中写入信息,之于是哪一个log文件,则由服务器决定。利用这个方法,我们可以在log文件中记录访问者的信息,这对于统计访问流量来源方面十分有用,同时也利于管理员监控网站的运行情况。其实,还有一个同名但是不同参数的log()方法,利用后者,我们可以将JSP程序执行过程中所发生的错误事件都计入log文件中。
效果为:
二.session作用域
1.Object HttpSession.getAttribute(String name):从session中获取信息
2.void HttpSession.setAttribute(String name,Object value):想session中输入信息
3.HttpSession HttpServletRequest.getSession():获取当前请求所在的session的对象
注意:
session的开始比较好判断,它从浏览器发出第一个http请求即认为会话开始。但结束时刻就不好判断了,因为浏览器的关闭并不会通知服务器。一般来说,一段时间内客户端没有反应,则认为会话结束。tomcat的默认值为120分钟,但是这个值也可以通过HttpSession的setMaxInactiveInterval()方法来设置:
1.void setMaxInactiveInterval(int interval)
如果想主动让会话结束,可以使用HttpSession的invalidate()方法,用于强制结束session:
2.void invalidate():
三.request作用域
一个http请求的处理可能需要多个servlet合作,而这几个servlet之间可以通过某种方式来传递信息,但这个消息在请求结束后就无效了。
Servlet之间的信息共享是通过HttpServletRequest接口的两个方法实现的。
1.void setAttribute(String name,Object value):将对象value以name为名称保存到request作用域中。
2.Object getAttribute(String namr):从request作用域中取出指定名称的信息。
设置好之后,就要使用RequestDispatcher接口的forward()方法,通过它将请求转发给其他Servlet。
1.RequestDispatcher ServletContext.getRequestDispatcher(String path):取得Dispatcher以便转发,path为转发的目的servlet.
2.void RequestDispatcher.forward(ServletRequest request,ServletResponse response):将request和response转发.
四.Page作用域
page对象的作用范围仅限于用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在被转发到其他地方后被释放。对page对象的引用通常存储在pageContext对象中.