1 总体对比

1.1 作用范围:

Request域对象: 仅一次请求范围有效。
ServletContext域对象:一个工程有效。
Session域对象: 一个浏览器的多次请求范围有效。(会话范围有效)

1.2 保存值的生命周期不一样:

request:
仅浏览器发出请求的时候,容器开始生效,响应完成的时候,容器死亡。
servletContext:
(1)创建时机:servletContext对象会被tomcat服务器创建出来。
(2)死亡时机(了解)
1)tomcat启动状态下,移除工程。
2)正常停止tomcat服务器。
session:
(1)创建时机
1)这个浏览器在servlet中第一次使用session的时候会创建。
2)这个浏览器第一次访问jsp的时候,服务器也会为这个浏览器创建一个session对象。
(2)销毁时机
1)程序员调用invalidate方法(立刻销毁)
2)设置的存活时间到了(默认是30分钟)
3)服务器非正常关闭(例如突然断电)

1.3 操作属性值的方法(一样):

setAttribite
getAttribute
removeAttribute

2 具体情况

2.1 request容器

2.1.1 生命周期:

仅浏览器发出请求的时候,容器开始生效,响应完成的时候,容器死亡。

2.1.2 作用范围:

仅一次请求范围有效。
转发的过程中request对象并没有死亡,因此在request对象存的值,依然有效。

2.1.3 操作属性值的方法:

setAttribite(属性名,属性值)
getAttribute(属性名)
removeAttribute(属性名)

2.2 servletContext容器

2.2.1 生命周期:

(1)创建时机(记住):
当服务器启动的时候,servletContext对象会被tomcat服务器创建出来,且每一个工程仅有一个对象,所有的servlet对象都可以获取这个servletContext对象并使用。
(2)死亡时机(了解)
1)tomcat启动状态下,移除工程。
2)正常停止tomcat服务器。

2.2.2 作用范围:

servletContext是一个工程容器对象。可以简单理解为时tomcat为每一个web工程创建的一个唯一的对象。一个工程有效。
每一个工程仅有一个对象,所有的servlet对象都可以获取这个servletContext对象并使用。

2.2.3 获取方式:

  1. 1)获取servletContext对象的方式1(了解)<br /> ServletContext c1 = this.getServletConfig().getServletContext();<br /> 2)获取servletContext对象的方式2:(掌握)<br /> ServletContext c2 = this.getServletContext();

2.2.4 操作属性值的方法:

  1. 1)存数据<br /> c2.setAttribute("username","rose");<br />(2)取数据<br /> c2.getAttribute("username");<br /> 3)移除值<br /> c2.removeAttribute("username");

2.3 session容器

2.3.1 生命周期

从session对象创建到session对象死亡;
(1)创建时机
1)这个浏览器在servlet中第一次使用session的时候会创建。
2)这个浏览器第一次访问jsp的时候,服务器也会为这个浏览器创建一个session对象。
(2)销毁时机
1)程序员调用invalidate方法(立刻销毁)
2)设置的存活时间到了(默认是30分钟)
3)服务器非正常关闭(例如突然断电)

2.3.2 作用范围:

一个浏览器的多次请求范围有效。(会话范围有效)

2.3.3 获取方式:

  1. request.getSession();

2.3.4 操作属性值的方法:

  1. 存值:<br /> Session对象.setAttribite("属性名",属性值);<br /> 取值:<br /> Session对象.getAttribite("属性名");<br /> 删除值:<br /> Session对象.removeAttribute("属性名");

2.3.5 其他api

  1. 销毁session对象:<br /> Session对象.invalidate();<br /> 设置存活时间:<br /> Session对象.setMaxInactiveInterval(秒数); (默认存活30分钟)