对象存活时间:request scope < session scope >应用作用域
共享资源区(The shared resource areas)都有一个生命周期(lifetime) and 可见性(visibility) 规则,定义了资源的作用域(defines the scope of the resource).
1、请求作用域(request scope)
每当客户发出HTTP请求时,服务器创建一个实现javax.servlet.http.HttpServletRequest接口的对象,此对象 包含一个由属性(key/value)构成的集合,用来存储各种对象,以供该请求在其生命周期中使用。属性的作用域局限在请求的生命周期中。当服务器完成 请求,响应也回馈给客户时,请求及其属性对客户而言没有什么价值,由JVM当作垃圾回收。
2、会话作用域(session scope)
web容器会创建一个实现了javax.servlet.http.HttpSession接口的对象,用来识别某个跨多个页面请求的用户。会话建 立的时机是由应用程序和容器实现来决定。用户的会话会保持一段时间,可以通过1)应用程序的部署描述文件(deployment descriptor)来配置,2)调用会话对象上的invalidate()方法,来撤销会话。
如果对象存储在某个用户的会话中,有不同的会话用户是看不见的。
3、应用作用域
对安装到servlet容器的web应用程序,servlet容器会为之创建一个实现了javax.servlet.ServletContext 接口的对象。当容器第一次启动时,就会完成这件事。
所有客户和当前Web应用程序的所有线程都看得见应用作用域的对象,这些对象会一直存活到程序代码将其删除,或者到应用程序中止。
4、页面作用域(page scope)
page scope只和JSP页面有关。有页面作用域的对象都会存储在每个页面的javax.servlet.jsp.PageContext里,且只有所属的 JSP页面才可以存取那些对象,一旦响应返回客户,或者页面转发到另一资源,这些对象就不能再使用了。