request | 在当前请求中有效 |
session | 在当前会话中有效 |
application | 在一次应用程序中有效 |
作用域 | 意义 | 实现接口 |
request | HTTP请求内 | HttpServletRequest |
session | HTTP会话内 | HttpSession |
application | 服务器生命周期内 | ServletContext |
request
1.Web交互的最基本单位为HTTP请求,每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问
2.一个HTTP请求的处理可能需要多个Servlet合作,几个Servlet之间可以通过HttpServletRequest接口的两个方法传递信息,方法如下
void setAttribute(String name, Object value) 将对象 value 以 name为名称保存到request作用域中
Object getAttribute(String name)从request作用域中取得指定名字的信息
这两种方法一般成对出现。都是在服务器端内部执行的,客户端不知道服务器端是否执行过。
3.doGet()、doPost()函数的第一个参数就是 HttpServletRequest对象, 使用这个对象的 setAttribute 即可传递信息。
session(会话作用域)
1.对象内数据的存活范围是当前浏览器页面的时间。只要浏览器窗口未关闭,session对象就一直存在。
2.Object session.getAttribute(“name”) 从session中获取信息
session.setAttribute(String name, Object value)向session中保存信息
HttpServletRequest.getSession()方法可以获得HttpSession对象
session HttpServletRequest.getSession()获取当前请求所在的session的对象
3.浏览器发出第一个HTTP请求即可认为会话开始,如果一定的时间内客户端没有反应,则认为会话结束。 Tomcat的默认值为120分钟,但这个值也可以通过HttpSession 的 setMaxInactiveInterval 方法来设置。
application(服务器启动到关闭的整段时间)
1.只要服务器没有关闭,application对象中的数据就一直存在,
2.Object getAttribute(String name) 从application中获取信息
void setAttribute(String name, Object value)向application作用域中设置信息
3.application作用域上的信息传递通过ServetContext实现
可以看到,每个作用域除了实现接口不同、意义不同之外,它们的使用方法和作用都是相同的, 都是通过 getAttribute 和 setAttribute 方法进行信息传递。