JSP四大域对象
pageContext、request、session、application
以上书写的顺序,是按照域对象作用范围从小到大书写的!
这里服务器是用的Tomcat(免费开源都爱用0.0)
在当前页面获取域对象的值
areaObject.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
/* 数据准备 */
pageContext.setAttribute("d1", "pageContext域对象");
request.setAttribute("d2", "request域对象");
session.setAttribute("d3", "session域对象");
application.setAttribute("d4", "application域对象");
%>
<!-- 在当前页面获取域对象的值 -->
${d1 }<br>
${d2 }<br>
${d3 }<br>
${d4 }<br>
</body>
</html>
显示结果:
pageContext域对象
request域对象
session域对象
application域对象
在请求转发页面显示
原页面body标签里面,最后加上
<%
request.getRequestDispatcher("areaObject1.jsp").forward(request, response);
%>
areaObject1.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${d1 }<br>
${d2 }<br>
${d3 }<br>
${d4 }<br>
</body>
</html>
显示结果;
(空)
request域对象
session域对象
application域对象
得出pageContext域对象作用范围最小,是本个页面。请求转发页面不显示
重定向页面显示
同样的位置,在areaObject1.jsp中加入
<% response.sendRedirect("areaObject2.jsp"); %>
areaObject2.jsp页面和1是一样的,这里也贴一下吧
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${d1 }<br>
${d2 }<br>
${d3 }<br>
${d4 }<br>
</body>
</html>
运行结果:
(空)
(空)
session域对象
application域对象
得出request域对象作用范围其次,是一次请求。
session域对象
接下来将地址栏路径复制,浏览器关闭,注意是关浏览器,关标签页不行,然后路径粘贴直接访问。
显示结果:
(空)
(空)
(空)
application域对象
得出request域对象作用范围再其次,是一次会话。
application域对象
接下来将tomcat重启,地址栏重新访问。
显示结果:
(空)
(空)
(空)
(空)
得出request域对象作用范围最大,其信息存储在服务器中。
本文通过实例展示了JSP的pageContext、request、session、application四大域对象的作用范围。在当前页面,四个域对象都能存储数据,但在请求转发和重定向过程中,pageContext域对象只在本页面有效,request域对象在一次请求内有效,session域对象在一次会话内有效,而application域对象在整个应用生命周期内有效。实验结果清晰地揭示了它们的作用范围差异。
1115

被折叠的 条评论
为什么被折叠?



