梦入琼楼寒有月,行过石树冻无烟

JSP 四种作用域

对象的作用域就是对象的生命周期和可访问性,在JSP中主要拥有四种作用域,即:页面域、请求域、会话域、应用域。

ID SM DA
页面域 (page scope) 页面域的生命周期是指页面的执行时间 存储在页面域的对象只能在他所在的页面进行访问
请求域 (request scope) 请求域的生命周期是指一次的请求过程 存储在请求域之中的对象只能在请求过程中才能访问
会话域 (session scope) 会话域的生命周期是指莫个客户端与服务器连接的所用时间 客户端在第一次访问服务器时会创建绘画,在会话过期之前,存储在会话域中的对象都可以被访问
应用域 (application scope) 服务器开始执行服务到服务器关闭的时间就是应用域的生存时间 存储在应用域中的对象在整个程序运行期间可以被所有的JSP和服务器连接器(Servlet)共享访问。

作用与对应函数

ID DA
pageContext 页面域
requesteContext 请求域
sessionContext 会话域
applicationContext 应用域

页面域

1
2
3
4
5
6
7
8
9
10
11
<% 
int pagecontext = 1;
// page
if (pageContext.getAttribute("pageContext") != null) {
pagecontext = Integer.parseInt(pageContext.getAttribute("pageContext").toString());
pagecontext++;
}
// 设置属性
pageContext.setAttribute("pageCount", pagecontext);
%>
<p>page:<%=pagecontext %></p>

请求域

1
2
3
4
5
6
7
8
9
<%
int requestcontext = 1;
if (request.getAttribute("requestContext") !=null) {
requestcontext = Integer.parseInt(request.getAttribute("requestContext").toString());
requestcontext++;
}
request.setAttribute("requestContext", requestcontext);
%>
<p>request:<%=requestcontext %></p>

会话域

1
2
3
4
5
6
7
8
9
<%
int sessioncontext = 1;
if (session.getAttribute("sessionContext") !=null) {
sessioncontext = Integer.parseInt(session.getAttribute("sessionContext").toString());
sessioncontext++;
}
session.setAttribute("sessionCount",sessioncontext);
%>
<p>session:<%=sessioncontext %></p>

会话域访问范围为当前浏览器的绘画,因此刷新页面访问会计数增加,但是新开浏览器时则会重置为0;

应用域

1
2
3
4
5
6
7
8
9
<%
int applicationcontext = 1;
if (application.getAttribute("applicationContext") !=null) {
applicationcontext = Integer.parseInt(application.getAttribute("applicationContext").toString());
applicationcontext++;
}
application.setAttribute("applicationContext",applicationcontext);
%>
<p>application:<%=applicationcontext %></p>

应用域为整个应用,只要服务器不停止运行,计数就会累计进行增加

⬅️ Go back