到此为止,对于jsp:useBean创建的对象,我们都将它们看作是_jspService方法中的局部变量来处理(jspService由页面生成的servlet的service方法调用)。虽然bean的确绑定到
局部变量,但这并非惟一的行为.它们还存储在4个不同的位置—依jsp:useBean的可选属性scope的值而定。

使用scope时,系统首先检查指定的位置是否存在指定名称的bean。仅当系统找不到现有的bean时,才会创建新的bean。这种行为使得servlet可以用下面的方式处理复杂的用户请求:建立bean,将它们存储在3个标准共享位置中的某个位置(请求、会话或servlet的上下文),然后将清求转发到几个适当JSP页面中的某个页面,提供适合于请求数据的结果。
如下所述,scope属性有4个可选值:Page(默认),request, session和 application.

.<jsp:useBear  ...scope="page"/>
这是默认的值:完全省略scope属性也会得到相同的行为。page作用域表示:在处理当前请求期间,除了要将bean对象绑定到局部变量外,还应该将它放在PageContext对象中。将对象存储在此处表示,servlet可以通过调用预定义变量pageContext的getAttribute方法访它。由于每个页面和每个请求都有不同的PageContext对象,所以scope=page(或省略scope时表示不共享}bean,也就是针对每个请求都创建新的bean.

同理,其他三个属性值也可以类似理解。

request共享:bean

package cn.donghaua.bean;

public class BakedBean {

private String level="half-baked";
private String goesWith = "hot dog";
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getGoesWith() {
return goesWith;
}
public void setGoesWith(String goesWith) {
this.goesWith = goesWith;
}

}

主页面Baked.jsp

<body>
<H1>first requst page</H1>
<jsp:useBean id="requestBean" class="cn.donghaua.bean.BakedBean" scope="request"/>
<!-- <jsp:setProperty property="*" name="requestBean"/> -->
first page bakedLevel:
<jsp:getProperty property="level" name="requestBean"/><br>
first page goesWith:
<jsp:getProperty property="goesWith" name="requestBean"/><br>
<%= request.getRemoteHost() %><br>
<jsp:include page="/Baked_In.jsp"/>
</body>

被包含页面Baked_In.jsp;

this is the included page:<br>
<jsp:useBean id="requestBean" class="cn.donghaua.bean.BakedBean" scope="request"/>
<i>include level:</i>
<jsp:getProperty property="level" name="requestBean"/><br>
<i>include goesWith:</i>
<jsp:getProperty property="goesWith" name="requestBean"/>

输出:

first requst page

first page bakedLevel: half-baked
first page goesWith: hot dog
127.0.0.1
this is the included page:
include level: half-baked
include goesWith: hot dog

同理session及其他的属性也可以共享bean

共享bean的更多相关文章

  1. Spring配置文件解析--bean属性

    1.bean设置别名,多个别名用逗号隔开 <!--使用alias--> <bean id="app:dataSource" class="...&quo ...

  2. bean 的各个属性

    http://www.springframework.org/schema/beans/spring-beans.xsd org.springframework.beans.factory.confi ...

  3. 单例Bean注册表接口SingletonBeanRegistry

    Github: SingletonBeanRegistry.java SingletonBeanRegistry package org.springframework.beans.factory.c ...

  4. 浅析Spring中bean的作用域

    一.前言   刚刚花了点时间,阅读了一下Spring官方文档中,关于bean的作用域这一块的内容.Spring-4.3.21官方文档中,共介绍了七种bean作用域,这篇博客就来简单介绍一下这七种作用域 ...

  5. 【Spring】IoC容器 - Spring Bean作用域Scope(含SpringCloud中的RefreshScope )

    前言 上一章学习了[依赖来源],本章主要讨论SpringBean的作用域,我们这里讨论的Bean的作用域,很大程度都是默认只讨论依赖来源为[Spring BeanDefinition]的作用域,因为在 ...

  6. 面试突击79:Bean 作用域是啥?它有几种类型?

    Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看. PS:Java ...

  7. spring框架学习(三)

    一.Spring自动组件扫描 Spring 提供组件扫描(component scanning)功能.它能从指定的classpath里自动扫描.侦测和实例化具有特定注解的组件. 基本的注解是@Comp ...

  8. springMvc源码学习之:spring源码总结

    转载自:http://www.cnblogs.com/davidwang456/p/4213652.html spring beans下面有如下源文件包: org.springframework.be ...

  9. jdk 1.5新特性说明

    “JDK1.5”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each循环,自动装包/拆包,枚举,可变参数,静态导入.使用这些特性有助于我们编写更加清晰,精悍,安全的代码. ...

随机推荐

  1. php的引用

    <?php $var1 = 1; $var2 = 2; function foo(){ global $var1,$var2; $var2 = &$var1; } function te ...

  2. Java线程之二 锁定与等待堵塞原理图

    如上图所看到的.

  3. caret彻底的理解css的三角形【通过border】

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 混淆篇之原生DOM操作方法小结

    1.0   DOM结构 1.1先来看结构图: 父节点        兄弟节点        当前节点            属性节点            子节点        兄弟节点一般任意一个节 ...

  5. Mysql联合查询UNION和UNION ALL的使用介绍

    UNION和UNION ALL的作用和语法 UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行.UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相 ...

  6. juce中的CallbackMessage

    这个类作为所有消息的基类,主要是包装了回调函数 virtual void messageCallback() = 0; /* ===================================== ...

  7. [C++空间分配]new运算符、operator new、placement new的区别于联系

    先科普一下: 1. new的执行过程: (1)通过operator new申请内存 (2)使用placement new调用构造函数(内置类型忽略此步) (3)返回内存指针 2. new和malloc ...

  8. JVM学习之实例分析JVM安全体系

    转自:http://www.importnew.com/17093.html,感谢分享 类加载器的作用就是将真实的class文件根据位置将该Java类的字节码装入内存,并生成对应的Class对象.用户 ...

  9. 编译SASS

    编译SASS sass编译有很多种方式,如命令行编译模式.sublime插件SASS-Build.编译软件koala.前端自动化软件codekit.Grunt打造前端自动化工作流grunt-sass. ...

  10. javaScript的2种变量范围有什么不同

    1.javascript怎样选中一个checkbox,怎样设置它无效? document.all.cb1[0].disabled = true;   2.js中的3种弹出式消息提醒(警告窗口,确认窗口 ...