摘要:
JavaBean的生命周期存在于4种范围中,分别为page,request,session,application。他们通过jsp:useBean表签的scope属性来进行设置。这四种范围虽然存在很大区别,但是他们与jsp的page,request,session,application相对应。
- page:与当前页面你相对应,当前页面关闭时,JavaBean销毁
- request: 与Jsp的request生命周期相对应,当request销毁随之销毁
- session: 与Jsp的session生命周期相对应,当session销毁随之销毁
- application:与Jsp的applicationt生命周期相对应,在各个用户和服务器之间共享,只有当服务器关闭时,JavaBean才销毁。
1 创建Counter类:
package ok;
public class Counter {
private int count=0;
public int getCount() {
return ++count;
}
}
2 在index,jsp种创建session和application范围内的实例对象:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 创建一个session范围内的Counter对象 -->
<jsp:useBean id="counter_session" class="ok.Counter" scope="session"/>
<!-- 创建一个application范围内的Counter对象 -->
<jsp:useBean id="counter_application" class="ok.Counter" scope="application"/>
<table align="center" width="350" border="1">
<tr>
<td colspan="2" align="center"><br><h1>JavaBean作用域</h1></td>
</tr>
<tr>
<td align="right" width="30%">session</td>
<td><jsp:getProperty name="counter_session" property="count"/></td>
</tr>
<tr>
<td align="right">application</td>
<td><jsp:getProperty name="counter_application" property="count"/></td>
</tr>
</table>
</body>
</html>
3 此页面分贝输出session和application范围计数器的值,当开启一个新的浏览器窗口时,session生命周期结束,与之对应的Counter对象被销毁,但application范围的Counter对象依旧存在。