对于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,那将得到不正确的结果。

JAVABEAN的SCOPE属性(转载)的更多相关文章

  1. JSP中scope属性 scope属性决定了JavaBean对象存在的范围

    scope属性决定了JavaBean对象存在的范围. scope的可选值包括: ---page(默认值) ---request ---session ---application   1.page范围 ...

  2. AngularJS自定义指令directive:scope属性 (转载)

    原文地址:http://blog.csdn.net/VitaLemon__/article/details/52213103 一.介绍: 在AngularJS中,除了内置指令如ng-click等,我们 ...

  3. jsp:useBean的scope属性

    目录 1.分类 2.page 3.request 4.session 5.application 1.分类 对于jsp:useBean创建的对象,由jsp:useBean的可选属性scope指定,可以 ...

  4. Angular自定义指令directive:scope属性

    在AngularJS中,除了内置指令如ng-click等,我们还可以自定义指令.自定义指令,是为了扩展DOM元素的功能.代码中,通过指定directive中的restrict属性,来决定这个指令是作为 ...

  5. AngularJS中Directive指令系列 - scope属性的使用

    文章是转的,我做下补充.原文地址:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部 ...

  6. JSTL中的scope属性

    前两天接到老大一个任务:要验证一下<c:import>能否动态地引入不同的文件.当时很兴奋,要知道在对日外包里面,这个也得算技术活了.呵呵! 说干就干,写了两个jsp文件:m.jsp  t ...

  7. 有两个地方,用到了javabean对象和属性字符串值之间的转换

    1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...

  8. 菜鸟学习Struts——Scope属性

    一.概念. 在Action映射配置中,Scope属性可以取值为:request或session.Scope属性表示:Struts框架在将     ActionForm对象(与目标Action匹配的Ac ...

  9. 在表格中,th scope="row"和th scope="col"中的scope属性的用法及意义

    把表头和数据联系起来:scope,id,headers属性就我用到现在,很多表格要比上面提供的例子复杂的多.让例子复杂一点,我会移去"Company"表头,并且把第一列的数据移到表 ...

随机推荐

  1. 使用AtomicStampedReference<T>的大坑

    //在初始化的时候会把引用和时间戳存到pair中 AtomicStampedReference<Integer> integerAtomicStampedReference = new A ...

  2. HTTP/1.1 与 HTTP/2.0

    HTTP/1.1 与 HTTP/2.0 HTTP/1.1 持久连接 非持久连接

  3. Graylog2进阶 打造基于Nginx日志的Web入侵检测分析系统

    对于大多数互联网公司,基于日志分析的WEB入侵检测分析是不可或缺的. 那么今天我就给大家讲一讲如何用graylog的extractor来实现这一功能. 首先要找一些能够识别的带有攻击行为的关键字作为匹 ...

  4. 面向对象第三单元博客(JML)

    // demo/Graph.java package demo; ​ import java.util.ArrayList; ​ public class Demo { /*@ public norm ...

  5. 程序员找工作必备 PHP 基础面试题

    1.优化 MYSQL 数据库的方法 (1) 选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置 NOT NULL, 例如’省份,性别’, 最好设置为 ENUM (2) 使用连接(JOIN)来 ...

  6. MyBatis框架——缓存机制

    使⽤缓存机制的作⽤也是减少 Java 应⽤程序与数据库的交互次数,从⽽提升程序的运⾏效率. ⽐如第 ⼀次查询出某个对象之后,MyBatis 会⾃动将其存⼊缓存,当下⼀次查询同⼀个对象时,就可以直接从 ...

  7. 解决2020-3-27 github无法访问

    早上的github无法访问了 查找资料后,发现可以修改 hosts 文件 右键 属性 将只读去掉 进行修改 其中的ip去如下地址拿 试一下,大功告成

  8. Cobaltstrike指令大全/beacon命令

    BeaconCommands=============== Command Description ------- ----------- browserpivot 注入受害者浏览器进程 bypass ...

  9. nop 配置阿里cdn 联通4g 页面显示不全 查看源代码发现被截断

    开发中遇见特别诡异的问题, 项目使用nop框架,pavilion主题,之后配置阿里cdn,然后在联通4g的情况下苹果手机网页显示不完全,nop首页和产品详情页都是如此,排查过程: 1.阿里cdn设置了 ...

  10. 使用Jenkins与Docker持续集成与发布NetCore项目(实操篇)

    使用Jenkins与Docker持续集成与发布NetCore项目(教程一) 原文地址:https://www.cnblogs.com/Jackyye/p/12588182.html 基本环境 该教程的 ...