jsp作用域?
先回顾我们之前说的jsp内置对象吧
我们只讨论page、request、session、application
因为都有setAttribute、getAttribute方法
page 作⽤域:对应的内置对象是 pageContext。(这里注意一下)
request 作⽤域:对应的内置对象是 request。
session 作⽤域:对应的内置对象是 session。
application 作⽤域:对应的内置对象是 application。
作用域范围比较
page < request < session < application
page 只在当前⻚⾯有效。
request 在⼀次请求内有效。
session 在⼀次会话内有效。
application 对应整个 WEB 应⽤的。
好了,我们通过例子来看吧
先感受一下page的作用域,看看味道就行了,一个页面存取操作,实际开发没什么意义
<%
/*page的内置对象是pageContext,不是page*/
pageContext.setAttribute("name","Tom");
%>
<h1>111</h1>
<h2>222</h2>
<%
String name = (String)pageContext.getAttribute("name");
out.write(name);
%>
结果是这样
我们在其他页面接收试一试,来写一个转发,看到值是null,没有接收到
那如果是请求request呢,它只在一次请求响应中有效
session呢?它包括多次请求和响应
application呢,它是范围最大的,只要tomcat不关闭就存在,用什么浏览器都可以
写一个网站浏览量的计数功能,要所有人不同浏览器进来都看得到,并且还会增加浏览量,所以要applicartion
<body>
<%
Integer count = (Integer)application.getAttribute("count");
if (count == null) {
count = 1;
application.setAttribute("count",count);
}else{
count++;
application.setAttribute("count",count);
}
%>
您是第<%=count%>位客户
</body>
看看不同浏览器的效果,是同步的