简洁明了阐述jsp是大作用域在实际开发中很有用
JSP有4个作用域,分别是
pageContext当前页面存储数据使用准备setContext.jsp和getContext.jsp,分别表示向作用域设置数据,和从作用域获取数据。
requestContext 一次请求 ,转发到某个页面使用
sessionContext 当前会话 所关联的当前页面applicationContext 全局,所有用户共享
pageContext表示当前页面作用域
通过pageContext.setAttribute(key,value)的数据,只能在当前页面访问,在其他页面就不能访问了。
使用:
<%pageContext.setAttribute("name","gareen");%>接收:
<%=pageContext.getAttribute("name")%>
requestContext 表示一次请求。随着本次请求结束,其中的数据也就被回收。
requestContext指的是一次请求使用:
<%
request.setAttribute("name","gareen");
%>
接收:
<%=request.getAttribute("name")%>
如果发生了服务端跳转,从setContext.jsp跳转到getContext.jsp,这其实,还是一次请求。 所以在getContext.jsp中,可以取到在requestContext中设置的值
这也是一种页面间传递数据的方式
使用
<%
request.setAttribute("name","gareen");
%>
跳转:
<jsp:forwardpage="getContext.jsp"/>
接收:
<%=request.getAttribute("name");
所以页面间客户端跳转的情况下,是无法通过request传递数据的。
使用:
<%
request.setAttribute("name","gareen");
response.sendRedirect("getContext.jsp");
%>
接收:
<%=request.getAttribute("name")%>
sessionContext 指的是会话,从一个用户打开网站的那一刻起,无论访问了多少网页,链接都属于同一个会话,直到浏览器关闭。
所以页面间传递数据,也是可以通过session传递的。
但是,不同用户对应的session是不一样的,所以session无法在不同的用户之间共享数据。与requestContext类似的,也可以用如下方式来做
使用:
<%
session.setAttribute("name","gareen");
response.sendRedirect("getContext.jsp");%>
接收:
<%=session.getAttribute("name")%>
applicationContext 指的是全局,所有用户共享同一个数据
在JSP中使用application对象, application对象是ServletContext接口的实例
也可以通过 request.getServletContext()来获取。
所以 application == request.getServletContext() 会返回true
application映射的就是web应用本身。
与requestContext类似的,也可以用如下方式来做
使用:
<%application.setAttribute("name","gareen");System.out.println(application == request.getServletContext());response.sendRedirect("getContext.jsp");%>
接收:
<%=application.getAttribute("name")%>

本文详细介绍了JSP中的四种作用域:pageContext、requestContext、sessionContext和applicationContext,并通过示例展示了如何在这些作用域中设置和获取数据。
1167

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



