JSP四大作用域

一、PageContext域
1.生命周期:当对JSP的请求开始,当相应结束时销毁。
jsp页面被执行,声明周期开始;
jsp页面执行完毕,声明周期结束;


2.作用范围:整个JSP页面,是四大作用域中最小的一个。

3、作用:
(1)可以作为入口对象获取其他八大隐式对象的引用

getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象


(2)域对象,四大作用域的入口,可以操作四大作用域中的域属性,在当前jsp中共享数据

pageContext对象的方法
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext对象中还封装了访问其它域的方法
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE

findAttribute方法-- 搜寻四大作用域中的属性,如果找到则返回该值,如果四大作用域中都找不到则返回一个null,搜寻的顺序是从最小的域开始向最大的域开始寻找


(3)提供了请求转发和请求包含的快捷方法

pageContext.include("/index.jsp");—— 相当于request.getRequestDispatcher("/index.jsp").include(request, response);
pageContext.forward("/index.jsp");——相当于request.getRequestDispatcher("/index.jsp").forward(request, response);

二、Request域
1.生命周期:
在Service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。
用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束;
2.作用范围:整个请求链(请求转发也存在)

三、HttpSession 域
1.生命周期:
在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。
(1)当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。
(2)如果服务器非正常关闭,没有到期的session也会跟着销毁。
(3)如果调用session提供的invalidate(),可以立即销毁session。
用户打开浏览器访问,创建session(开始),session超时或者被声明失效,该对象生命周期结束;

四、ServletContext
1.生命周期:
当WEB应用被加载进容器创建代表整个WEB应用的ServletContext对象;
当服务器关闭或WEB应用被移除时,ServletContext对象跟着被销毁。
2.作用范围:整个WEB应用。

五、总结
1、如果一个数据只在当前jsp页面使用,可以使用pageContext域存储
2、如果一个数据,除了在当前Servlet中使用,还要在请求转发时带到其他Servlet处理或jsp中显示,这个时候用request域
3、如果一个数据,除了现在我自己要用,过一会我自己还要用,存在session域
4、如果一个数据,除了现在我自己要用过一会其他人也要用,存在ServletContext域中

原文地址:https://www.cnblogs.com/shelly0307/p/10453443.html