到此为止,对于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. Python 操作 MySQL--(pymysql)

    h2 { color: #fff; background-color: #7CCD7C; padding: 3px; margin: 10px 0px } h3 { color: #fff; back ...

  2. C# 如何利用反射来加载程序集,并调用程序集中有关类的方法【转】

    假设在C盘根目录下有个Dog的Dll程序集文件,该程序集文件中包含类Dog 该类中有个狗叫几声的方法,如何通过反射来加载这个C:\Dog.dll,并且调用Dog类里面的Sound方法呢: public ...

  3. HDU 2602 Bone Collector - from lanshui_Yang

           题目大意:有n件物品,每件物品均有各自的价值和体积,给你一个容量为 V 的背包,问这个背包最多能装的物品的价值是多少?        解题思路:这是一道0 - 1 背包的简单模板题,也是 ...

  4. Maximum & Minimum Depth of Binary Tree

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  5. HTML5 canvas准备知识

    利用canvas来进行画图工作.因此,我们有必要进行一些画图方面的术语说明. 一.画布 在日常生活中,如果我们要画画,可以找纸.板.画布等等工具.而在网页元素中,我们只需要定义一个标签即可. < ...

  6. 基于Socket的UDP和TCP编程介绍

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

  7. row_number() over (partition by....order by...)用法 分组排序

    row_number() over (partition by....order by...)用法 分组排序 row_number() OVER (PARTITION BY COL1 ORDER BY ...

  8. restful_api

    http://www.ruanyifeng.com/blog/2014/05/restful_api.html

  9. 轻奢品牌全面崛起 Coach、UGG等纷纷抢滩新兴市场_新闻中心_赢商网

    轻奢品牌全面崛起 Coach.UGG等纷纷抢滩新兴市场_新闻中心_赢商网 轻奢品牌全面崛起 Coach.UGG等纷纷抢滩新兴市场

  10. transition与visibility与display

    http://www.zhangxinxu.com/wordpress/2013/05/transition-visibility-show-hide/ 术语解释是: visibility: 离散步骤 ...