前言
JSP四大域介绍简单介绍
一、JSP四大域简单介绍
对象实例 | 所在类 | 作用范围 |
---|---|---|
pageContext | pageContextimpl 类 | 当前jsp页面有效 |
request | HttpServletRequest类 | 第一次请求有效 |
session | Httpsession类 | 当前会话有效(打开浏览器到关闭浏览器) |
application | ServletContext类 | 整个web工程范围内有效(只要web工程不停止,数据都在) |
二、验证作用范围代码实例
1.创建一个scope1.jsp文件
<%
pageContext.setAttribute("key","pageContext");
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
%>
pageContext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%=request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%=application.getAttribute("key")%>
运行界面如下:
可看到四大域对象的都在作用范围内
2.创建一个scope2.jsp文件,并在scope1.jsp添加请求转发到scope2.jsp的代码
<%request.getRequestDispatcher("/scope2.jsp").forward(request,response);%>
pageContext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%=request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%=application.getAttribute("key")%>
重新部署工程,运行界面如下:
可看到pageContext域不在作用范围内,该域只在当前jsp页面进行数据传递
3.在浏览器地址栏输入scope2.jsp的地址,界面如下:
可看到request域不在作用范围内,该域只能在第一次请求时进行数据传递
4.关闭浏览器,再打开浏览器,在浏览器输入scope2.jsp的地址,界面如下:
可看到session域不在作用范围内,该域只在当前j当前会话进行数据传递
5.重新部署工程,在浏览器地址栏输入scope2.jsp的地址,界面如下:
可看到application域不在作用范围内,该域只在web工程范围内传递数据
三、四大域使用优先级
域对象可以像map一样存储数据的对象,四个域对象功能一样,不同的是它们对数据
的存取范围,虽然四个域对象都可以存取数据。在使用他们是有优先顺序的。
四个域在使用的时候,优先顺序分别是,它们从小到大的顺序范围:
pagecontext>request>session>application
原因:在存储数据时需要占用内存,使用最小的有效范围,可以在最短的时间内在这些数据不需要用的时候得到释放,可以减小对服务器的压力。