BirdsHover

——路漫漫其修远兮,吾将上下而爬楼梯!

  BlogJava :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 8 文章 :: 34 评论 :: 0 Trackbacks
本文通过实验的方法,总结出JavaBean在各种情况下实例的状态。

先定义一个类
package yurow.jstore;

import java.util.Random;

public class TestClass {
    
private int showCount;
    
    
public TestClass(){
        random 
= new Random().nextInt();
    }
    
    
private int random;
    
    
public String Show(){
        showCount
++;
        String str 
= "random : " + random;
        str
+="<br/>showCount : " + showCount;
        
return str;
    }
}

然后在Default.jsp中调用。
<jsp:useBean id="test1" class="yurow.jstore.TestClass" scope="page" />
<%= test1.Show() %>
<br/>
<jsp:useBean id="test2" class="yurow.jstore.TestClass" scope="page" />
<%= test2.Show() %>
在test.jsp同样使用这样的调用方式。

而scope一共有"application","page","session","request"四个值。

一、page
现在的情况是scope="page" 。其页面刷新。test1和test2的random不一致,并且两个页面中的也不一致。由此断定:
scope="page"情况下,一个userBean就是一次实例化的过程。

二、request
scope="request"的情况与scope="page" 的一样。

三、session
scope="session"的情况,同一个页面中,test1与test2的random不一致,可以断定,这是两个实例。而showCount 会不断累加,因此这两个实例并不随页面的刷新而重新创建。两个不同页面中,test1的状态完全一致,test2的状态完全一致。这表明,scope="session"的状态,创建实例是与id相关的。打开不同浏览器或者清空Cookies,将导致实例的重新创建。这表明,当前状态下,创建实例与session相关,有个过期的时间。

四、application
scope="application"是全局的表示。打开不同浏览器浏览不同的页面,test1与test2仍然不一致,但是不同页面的test1已经一致,并且不同浏览器中数量仍然累加。所以,实例的创建与否,只与id有关。
posted on 2009-05-22 13:49 Birdshover 阅读(242) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: