**
1、page范围
**
page范围的JavaBean生命周期是最短的,当一个网页由JSP产生并传送到客户端后,属于page范围的JavaBean也被清除。当JSP程序执行完成,并把结果传给客户端后,属于page范围的JavaBean对象就会被清楚
建立一个计算访客人数的JavaBean类Count
public class Count {
public Count(){
}
private int C = 0;
public void setCount(int c){
C = c;
}
public int getCount(){
return ++C;
}
}
接下来建立一个JSP网页usingCount.jsp
<%@page contentType="text/html" pageEncoding="gbk"%>
<title>page的生命周期</title>
</head>
<body>
<jsp:useBean id="count" scope="page" class="jsp.test.Counter"/>
<font color="red">page界面</font><br>
<h1> 你是request.jsp界面的第
<font color="yellow">
<jsp:getProperty name="count" property="counter"/>
</font>个访客</h1>
</body>
</html>
你会发现不管你刷新多少次,计数器的值都是为1,因为你点击刷新后JavaBean对象就消失,重新建立一个JavaBean对象
2、request范围
request类型的生命周期除了自身网页,还包括使用<jsp:include>
和<jsp:forward>
的有关网页,request有两个存取其他对象的方法,setAttribute()和getArribute(),JSP引擎会把<jsp:useBean>
标签中的id值当作索引值,通过setAttribute()方法产生新的JavaBean对象放置在request对象中,当下一个JSP程序通过forward程序取得传来的request对象时,通过getArribute()和索引值获取这个对象
还是相同的例子,建立setRequest.jsp
<%@page contentType="text/html" pageEncoding="gbk"%>
<title>requset的生命周期</title>
</head>
<body>
<jsp:useBean id="count" scope="request" class="jsp.test.Counter"/>
<font color="red">setRequest.jsp界面</font><br>
<h1> 你是本站第
<font color="yellow">
<jsp:getProperty name="count" property="counter"/>
</font>个访客</h1>
<jsp:include page="request.jsp"/>
</body>
</html>
当网页request.jsp页面运行时,首先建立一个生命周期为request的count对象,此时count对象值为1,接着重新导向到reques.jsp
<%@page contentType="text/html" pageEncoding="gbk"%>
<title>request的生命周期</title>
</head>
<body>
<jsp:useBean id="count" scope="request" class="jsp.test.Counter"/>
<font color="red">request.jdp界面</font><br>
<h1> 你是request.jsp界面的第
<font color="yellow">
<jsp:getProperty name="count" property="counter"/>
</font>个访客</h1>
<% out.println("你现在在request.jsp界面"); %>
</body>
</html>
因为request的周期未结束,所以setRequest.jsp会延续到reques.jsp界面,count的属性值为2
3、session范围
由于HTTP协议是无状态的通信协议,在web服务器没有直接的方法可以维护客户端的状态,session范围的JavaBean生命周期可以在一个使用者的会话期间使用
<%@page contentType="text/html" pageEncoding="gbk"%>
<title>page的生命周期</title>
</head>
<body>
<jsp:useBean id="count" scope="session" class="jsp.test.Counter"/>
<font color="red">演示界面</font><br>
<h1> 你是本站第
<font color="yellow">
<jsp:getProperty name="count" property="counter"/>
</font>个访客</h1>
</body>
</html>
每次在另一个新的浏览器窗口运行同样的程序,计数值是重新开始的,每一次都会产生一个独立的JavaBean对象
4、application范围
application范围是最长的一个,只要有一个JSP程序设置为application范围时,在相同的引擎下的web程序都可以通过这个JavaBean交换信息
<%@page contentType=“text/html” pageEncoding=“gbk”%>
你是本站第 个访客
每一次同一个用户浏览更新时,计数器会不断增加,如果打开新的窗口会发现计数值并不会从头开始计算