JSP中各种内置对象

来源:互联网 发布:美国资产证券化数据 编辑:程序博客网 时间:2024/06/11 02:22

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对象中.