zoukankan      html  css  js  c++  java
  • JAVABEAN的SCOPE属性(转载)

    对于JSP 程序而言,使用JavaBeans  组件不仅可以封装许多信息,而且还可以将一些

    数据处理的逻辑隐藏到JavaBeans  的内部,除此之外,我们还可以设定JavaBeans  的Scope

    属性,使得JavaBeans  组件对于不同的任务具有不同的生命周期和不同的使用范围。在

    前面我们已经提到过Scope属性具有四个可能的值分别是application 、session 、request

    page分别代表JavaBeans  的四种不同的生命周期和四种不同的使用范围。bean只有在它定义的范围里才能使用,在它的活动范围外将无法访问到它。JSP为它设定的范围有:

    page:  bean的缺省使用范围

    request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如重定向、链接等方式)转到另一个文件为止。还可通过使用    Request对象访问bean,如request.getAttribute(beanName)

    session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page、另一request里对此bean的调用。但必须在创建此bean的文件里事先用page指令指定了session=true

    application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page、另一request以及另一session里对此bean的调用。

    下面我们用一个最为简单的例子来搞明白它了。

    例子很简单,Bean的功能为取当前时间,其代码为Common.java,其源程序如下:

    package example3;

    import java.util.Date;

    import java.text.*;

    public class Common

    {

    Date d=new Date();

    public String now(String s)

    {

    SimpleDateFormat formatter = newSimpleDateFormat(s);

    return formatter.format(d);

    }

    }

    测试页面的代码为:

    date.jsp

    <jsp:useBeanscope="page" id="dt" class="example.Common"/>

    <%

    out.print(dt.now("yyyy-mm-dd"));

    %>

    输出结果:

    总结: 

    1、当scope=application时,我们浏览date.jsp,这时显示出了系统时间。可是不管我们怎么刷新,重新打开一次浏览器,甚至换台机器,它显示的时间始终不变,都是当初的时间(即bean刚创建时得到的系统时间),因为scope=application,所以Bean的实例在内存中只有一份,此时只要不重新启动WEB服务,输出不会变化。

    2、当scope=session时,浏览date.jsp,刷新时显示也不会变化。可是当我们重新打开一浏览器,即一个新的session,系统便再次创建Bean的实例,取得当前系统时间,这时将得到正确的时间。同样,再次刷新新打开的页面(新的session),显示也不会变化。

    3、当scope=page/request(它们的区别只在于包含静态文件时,此处无区别)时,不断刷新页面将不断得到当前系统时间。

    以上可以看出不同的scope,Bean有不同的作用域。使用时一定注意,不要将得到经常变动的Bean的scope设为application或session,那将得到不正确的结果。

  • 相关阅读:
    容灾、备份、存储
    春节前后学习实践的技术领域
    C#高级编程技术复习一
    利用投影制作多边框
    利用循环调用同一个函数
    IOS NSURLRequest(http请求)讲解 ---------赎罪之路
    IOS SQLite基本操作
    数据库三凡式通俗解析(转载)
    数据库设计原则(转载)
    MusicRadio ----------项目分享
  • 原文地址:https://www.cnblogs.com/EdinburghOne/p/8968138.html
Copyright © 2011-2022 走看看