Web开发中的四个域对象(范围由小到大):
page(jsp有效) request(一次请求) session(一次会话) application(当前web应用)
page域指的是pageContext.
request域指的是HttpServletRequest
session 域指的是HTTPSession
application 域指的是ServletContext
之所以他们是域对象,原因就是他们都内置了map集合,都有setAttribute getAttribute方法。而且他们的name都是String类型,而value都是Object类型。
他们都有自己固定的生命周期和作用域。
生命周期:
page:jsp页面被执行,生命周期开始,jsp页面执行完毕,声明周期结束。
request:用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束。
session:用户打开浏览器访问,创建session(开始),session超时或被声明失效,该对象生命周期结束。
application:web应用加载的时候创建。Web应用被移除或服务器关闭,对象销毁。[结束]。
注意:
1.Page只在当前jsp有效,每次请求分别对应不同的request.
2.Request,只在当前请求有效,每次请求分别对应不同的request域
3.Session只在一次会话中有效,会话结束就无法取到数据了。
【cookie】如果没有指定Cookies对象的有效期,则Cookies对象只存在于客户端的内存。当浏览器关闭时,Cookies就会失效。
4.application:在JSP自动生成的Servlet文件中,是这样定义的:final javax.servlet.ServletContext application;
ServletContext域:
1.这是一个容器
2.说明这个容器的作用范围是整个应用程序范围
四个域对象在选择的时候,能用范围小的绝不用范围大的:
page:数据只是暂时存在集合,在jsp页面的其他地方要用,用page(页面中自定义的map)
(什么时候需要用map了,就用page)
Request:【程序产生数据,数据显示完后就没有用了】
数据只是做显示的,看完了就没用了。就存request域,请求转发,Servlet产生的处理结果(数据)交给jsp显示。数据转发可以带数据。
Session:【程序产生数据,显示后等会还需要使用】
application:【ServletContext在jsp中另一个名字就是application,数据显示后,等会还需要用,还需要给别人用,例如聊天室】
【总结】:四个域对象在选择的时候,能用范围小的绝不用范围大的。
1.需要定义Map时不如用page,
2.请求Servlet,转发给jsp的数据存request,
3.请求重定向带过去的数据存Session,
4.全局的数据存application。
4.ServletContext:WEB容器在启动时,他会为每一个【WEB应用程序】都创建一个对应的ServletContext对象,它代表【当前WEB应用】,驻留在服务器的内存里。
在一个contex中的数据都是共享的,它是web应用的配置信息和配置参数。