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个页面
java中javabean scope应用
最新推荐文章于 2023-05-08 21:27:19 发布