1. 范围
四种范围对象 | 小->大 | 有效范围 |
---|---|---|
pageContext | JSP页面容器 | 当前页面有效 |
request | 请求对象 | 同一次请求有效 |
session | 会话对象 | 同一次会话有效 |
appliation | 全局对象 | 全局有效(整个项目有效) |
- pageContext 当前页面有效(页面跳转后无效)
- request 同一次请求有效;其他请求无效(请求转发后有效; 重定向后无效)
- session 同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效;从登陆->退出之间全部有效
- application 全局变量;整个项目运行期间都有效(切换浏览器仍然有效);关闭服务、其他项目无效
尽量使用最小范围
<%
pageContext.setAttribute("qt1","csf1");
session.setAttribute("qt2","csf2");
request.setAttribute("qt3","csf3");
application.setAttribute("qt4","csf4");
pageContext.setAttribute("qt5","csf5",PageContext.SESSION_SCOPE); 最后一个参数可以设置作用范围
//==session.setAttribute
String aaa = (String)application.getAttribute("qt1");
String s1= (String) pageContext.getAttribute("qt1");
String s2= (String) pageContext.findAttribute("qt2");
String s3= (String) pageContext.findAttribute("qt3");
String s4= (String) pageContext.findAttribute("qt4");
int x=0;
%>
<h1>取出的值为:</h1>
<h2><%= s1%></h2> 如果为空显示null
<h1>${qt3}</h1> EL表达式,如果为空不显示
<h2><%= aaa%>></h2>
当换个页面获取数据时只能显示
<h1>${qt1}</h1>
<h1>${qt2}</h1>
<h1>${qt3}</h1>
<h1>${qt4}</h1>
<h1>${qt5}</h1>
理解:
- request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的:
- session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
- application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用
比如:聊天数据;