JavaWeb四大域对象作用范围说明
作用范围分别是:
- page:当前页面有效
- request:当前请求有效
- session:当前会话有效
- application:当前应用有效
下面举了几个例子来帮助大家理解
第一种情况
直接运行test1.jsp
test1.jsp
<%
//往四个域中都分别保存了数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", " application");
%>
pageConext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%= request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%= application.getAttribute("key")
%> <br>
运行结果
第二种情况
有请求转发的情况
test1.jsp
<%
//往四个域中都分别保存了数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", " application");
%>
pageConext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%= request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%= application.getAttribute("key")
%> <br>
<%
request.getRequestDispatcher("/test2.jsp").forward(request,response);
%>
test2.jsp
pageConext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%= request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%= application.getAttribute("key")%> <br>
运行结果
第三种情况
在第二种的情况下,关闭浏览器,再直接打开test2.jsp。
运行结果
第四种情况
有重定向的情况
test1.jsp
<%
//往四个域中都分别保存了数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", " application");
%>
pageConext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%= request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%= application.getAttribute("key")
%> <br>
<%
String contextPath = request.getContextPath();
response.sendRedirect(contextPath + "/test2.jsp");
%>
test2.jsp
pageConext域中是否有值:<%=pageContext.getAttribute("key")%><br>
request域中是否有值:<%= request.getAttribute("key")%><br>
session域中是否有值:<%=session.getAttribute("key")%><br>
application域中是否有值:<%= application.getAttribute("key")%> <br>
运行结果