一、域对象
范围由小到大:page request session application
servlet的那4个域分别对应的是4个Class(详见api,javax.servlet.jsp.PageContext)
page--PageContext
request--HttpServletRequest
session--HttpServletSession
application--ServletContext
request,session,application都是基于page扩展的对象
所以可以根据page(pageContext)来获取任一一个域的对象
getPage()
getRequest()
getSession()
getServletContext()
每个域对象都提供了setAttribute getAtribute的方法 ,用于保存各自存储属性的范围
getPage().getAttribute()/setAttribute()
getRequest().getAttribute()/setAttribute()
getSession().getAttribute()/setAttribute()
getServletContext().getAttribute()/setAttribute()
二、实例
ServletContext的测试代码及结果:
设置属性的代码如下:
获取属性的代码如下:
测试结果:
Session类:
生命周期:第一次调用request.session()方法时,服务器会检查是否已经有对应的session,如果没有,就在内存中创建一个session,并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。
作用:一次会话。
测试代码:
测试结果:
PageContext类:
生命周期:对JSP请求时开始,当响应结束时销毁。
作用范围:整个Jsp页面,是四大域对象中 最小的一个。
作用:(1)获取其它八大隐式对象,可以认为是一个入口对象。
(2)获取其所有域中的数据。
Request类:
生命周期:在servic方法调用前由服务器创建,传入servi方法。整个请求结束,request生命结束。
作用范围:整个请求链(请求转发也存在)。
作用:在整个请求链中共享数据。
最常用到:在Servlet中处理好的数据交给Jsp显示,此时参数就可以放置在Request域中带过去。