四个作用域

来源:互联网 发布:linux 打包有什么用 编辑:程序博客网 时间:2024/05/03 06:13

作用域

•作用域"就是"信息共享的范围",也就是说一个信息能够在多大的范围内有效。

•Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。

1、application

•Application的作用范围在服务器一开始执行服务,到服务器关闭为止。
•Application的范围最大,停留的时间也最久,所以使用时要特别注意不然可能会造成服务器负载越来越重的情况。只要将数据存入application对象,数据的范围范围
•application作用域上的信息传递是通过ServletContext实现的,它提供的主要方法如下所示:
•      ObjectgetAttribute(Stringname):从application中获取信息。
•     void setAttribute(Stringname, Object value):向application作用域中设置信息。

2、session

HTTP会话开始到结束这段时间。Session 的作用范围为一段用户持续和服务器所连接的时间,但与服务 器断线,这个属性就无效。只要将数据存入session对象,数据的范围就为Session;
session是通过HttpSession接口实现的,它提供的主要方法如下所示。
Object HttpSession.getAttribute(String name):从session中获取信息。
void HttpSession.setAttribute(String name, Object value):向session中保存信息。
HttpSession HttpServletRequest.getSessio():获取当前请求所在的session的对象。
session的开始时刻比较容易判断,它从浏览器发出第一个HTTP请求即可认为会话开始。但结束时刻就不好判断了,因为浏览器关闭时并不会通知服务器,所以只能通过如下这种方法判断:如果一定的时间内客户端没有反应,则认为会话结束。Tomcat的默认值为120分钟,但这个值也可以通过HttpSession的setMaxInactiveInterval()方法来设置:

3、page

•当前页面从打开到关闭这段时间。标名pageContext.setAttribute("","");它只能在同一个页面中有效;
•request和page的生命周期都是短暂的,它们之间的区别:一个request可以包含多个page页(include,forward及filter)
•ActionContext类没有提供类似getRequest()这样的方法来获取封装了HttpServletRequest的Map对象。要得到请求Map对象,你需要为get()方法传递参数“request”。 
•publicMap getSession()
•获取封装了HttpSession的Map对象。 
•publicMap getApplication()
•获取封装了ServletContext的Map对象。

4、request

•当前页面从打开到关闭这段时间。标名pageContext.setAttribute("","");它只能在同一个页面中有效;
•request和page的生命周期都是短暂的,它们之间的区别:一个request可以包含多个page页(include,forward及filter)
•ActionContext类没有提供类似getRequest()这样的方法来获取封装了HttpServletRequest的Map对象。要得到请求Map对象,你需要为get()方法传递参数“request”。 
•publicMap getSession()
•获取封装了HttpSession的Map对象。 
•publicMap getApplication()
•获取封装了ServletContext的Map对象。

0 0
原创粉丝点击