JavaBean的生命周期(page,request,session,application)

**

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”%>

page的生命周期 演示界面

你是本站第 个访客

每一次同一个用户浏览更新时,计数器会不断增加,如果打开新的窗口会发现计数值并不会从头开始计算

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值