通过案例⽐较四⼤域对象的作⽤域
pageContext的作⽤域只在当前页⾯:
重点:
pageContext可以操作其他三⼤域对象
pageContext.setAttribute("p","request",PageContext.REQUEST_SCOPE);
等同于req.setAttribute("p","request");
其他session application 类似
pageContext.jsp
<body>
<%
pageContext.setAttribute("p","pp");
//pageContext可以操作其他三⼤域对象
//pageContext.setAttribute("p","request",PageContext.REQUEST_SCOPE);
//等同于 req.setAttribute 其他session application 类似
%>
</body>
pageContext1.jsp
<body>
<%=Attribute("p")%>
</body>
pageContext.jsp转发到pageContext.jsp的结果为:
1.看看转发过后,四个作⽤域是否能取到值:
pageContext.jsp
<%
pageContext.setAttribute("p","pp");
request.setAttribute("p","request");
session.setAttribute("p","session");
application.setAttribute("p","application");
//pageContext可以操作其他三⼤域对象
//pageContext.setAttribute("p","request",PageContext.REQUEST_SCOPE);
//等同于 req.setAttribute其他session application 类似
%>
pageContext1.jsp
<body>
<%=Attribute("p")%>
<%=Attribute("p")%>
<%=Attribute("p")%>
<%=Attribute("p")%>
</body>
jsp创建结果如下所⽰:
2.重定向后看看四个作⽤域的取值情况
3.不转发也不重定向,先访问pageContext.jsp,再访问pageContext1.jsp
session能取到值的原因:
当浏览器去访问第⼀个jsp时,服务器端已经创建了⼀个session,并将sessionId回了浏览器端的cookie,当浏览器访问此应⽤下的第⼆个页⾯时,浏览器端带着sessionId,那么服务器端就知道是同⼀个session了。
4.pageContext的重要⽅法
findAttribute(String name);
⾃动从page request session application依次查,到了就取值,结束查。
四⼤域对象:实际开发
PageContext : pageConext 存放的数据在当前页⾯有效。开发时使⽤较少。
ServletRequest: request 存放的数据在⼀次请求(转发)内有效。使⽤⾮常多。
HttpSession: session 存放的数据在⼀次会话中有效。使⽤的⽐较多。如:存放⽤户的登录信息,购物车功能。
ServletContext: application 存放的数据在整个应⽤范围内都有效。因为范围太⼤,应尽量少⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论