java中javabean scope应用

 1   application scope:它得生命周期和JSP的application对象同步,作用范围也和application对象一样,。使用这种类型得javabean组件,可以在多个用户之间共享全局信息。具体说来,它得生命周期就是这样得,如果某个JSP程序是有<jsp:useBean>操作指令创建了javabean对象,而且这个javabean组件具有application scope,那么这个javabean就一直在服务器得内存空间中待命,随时处理客户端的请求,直到服务器关闭为止,它所保持得信息才消失,它所占用得系统资源才会被释放。在此期间,如果有若干个用户请求的JSP程序中,,需要用到这个javabean组件,那么服务器在执行<jsp:useBean>操作指令时,,并不会创建新的javabean组件,而是创建源对象的一个同步拷贝,在任何一个拷贝对象上发生的改变都会影响到源对象,源对象也会做出同步的改变,不过这个状态的改变不会影响其他已经存在的拷贝对象。这种类型得javabean组件得功能和jsp的application对象十分相似,不过前者得功能要大的多,而且可以自由扩展,用起来也方便得多。

例子55和例子56如下
例子55:
package test;
public class Counter{
int Count=1;
public void Counter()
{
}
public void addCounter(){
Count++;}
public int getCount()
{
return Count;
}
}//定义了一个Counter Bean,这个javabean组件可以用于记录访问者的人数

例子56
<jsp:useBean id="counter" scope="application" class="test.Counter"/>
<br>
你好,你是第
<%
out.print(counter.getCounter());
counter.addCount();
%>位访客     //使用<jsp:useBean>操作指令引入了Javabean组件——Counter,并且声明它的scope位application,这一步很重要,然后调用了Counter组件得getCount()方法,获取访问的人数,如果Counter组件刚刚被创建,那么这个方法将会返回默认值--1,接着调用Counter组件得addCounter()方法,把访问人数加1

例子56运行效果如下
你好,你是第1位访客。


session Scope
如果javabean组件得scope 属性值为session,那么这个javabean组件得声明周期和作用范围就和jsp得session对象得声明周期,作用范围一样,也就是说,这一类型的javabean组件得生命周期就是某个会话过程所经历得时间,。这个会话过程是对单个用户而言的,会话过程的开始以用户开始访问某个网站为标志,会话过程结束以以用户结束对该网站的访问为标志。不同得用户对应着不同得会话过程,不同得会话过程之间互不干涉,互不影响。假设用户A第一次访问了某个网站得jsp程序。而其他得jsp程序又应用到同一个javabean对象时,那么服务器不会创建新的javabean对象,而是使用已经存在的javabean对象实例,也就是说在第一个jsp程序中创建的javabean组件对象在这个用户访问的同一网站的所有jsp程序中都是可用的,而且这个javabean组件对象的状态保持唯一性。如果有另外一个用户B,访问了用户A访问过的jsp程序,那么服务器是否会不创建新得javabean组件对象,而使用有用户A访问而创建得javabean组件呢,答案是否定得。服务器将会为用户b创建只属于他得javabean组件对象,这个新得javabean组件对象在用户B访问得同一网站得所有jsp程序中都是可以直接使用得,而不是需要创建一个新得组件。并且属于用户a得javabena组件对象和属于用户b得组件对象都是唯一得,他们之间互不干涉。、

下例是以上session组件应用得例子,编写一个特殊计数器,这个计数器并不是统计一个网页得访问人数,而是统计一个用户所访问得页面数目 例 57     58
//例57
<jsp:useBean id="counter" scope="session" class="test.Counter"/>
<br>
第一页
<br>
你好,你已经访问了
<%
out.println(counter.getCount());
counter.addCount();
%>个页面。//上面得javabean组件仍然是在例程55编写得Counter Bean、不过这里得Counter对象得属性是session而不是application
上面例子57运行效果如下
第一页
你好,你已经访问了一个页面

例子58
<jsp:useBean id="counter" scope="session" class="test.Counter"/>
<br>
第二页
<br>
你好,你已经访问了
<%
out.println(counter.getCount());
conter.addCount();
%>个页面。   //例子57和例子58程序上基本是一样得,如果首先访问了例子57,在访问例程58,那么服务器在执行<jsp:useBean>操作指令时,只是返回在例程57创建得Counter对象,而不会创建新得counter对象(即使两个程序文件中得<jsp:useBean>操作指令得id属性值不同,也不会创建新得javabean对象)

例子58运行效果如下
第二页
你好,已经访问了2个页面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值