对于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表现与实现分离 在JSP中使用JavaBean JavaBean的Scope属性 在Web服务器上部署JavaBean
Jsp结合JavaBean的实践(用到HashMap) javaBean的用处主要在于存取页面信息,通过getXXX和setXXX方法实现。 1、声明javaBean <jsp:useBean id="localName" class="com.jguru.Person" scope="application" /> Id:...
Spring IOC Bean标签属性介绍 0.Bean标签属性介绍 1.0 新建一个Maven工程 1.1 pom.xml 1.2 实体类JavaBean 1.2.1 User类 1.3 当Scope="singleton"时 1.4 当 Scope="singleton" 且 lazy-init="true" 时 1.5 当scope=...
1、 创建学生成绩的表单页面,并创建对应的JavaBean,在JSP页面中使用标签来设置和读取属性 2、 在多个页面间测试JavaBean的作用范围,通过实验对scope为page,request,session,application加强理解
等差的求和以及等比求和。 Javabean模型Example6_1_Bean.java中的getXxx和setXxx方法不涉及对数据的具体处理细节,以便增强模型...在本例子中Example6_1_Bean创建的Javabean模型的id是seriesData,scope取值是request。
2. JSP页面需要创建仅在本页面使用的JavaBean的示例,为了完成此功能必须使用jsp:useBean的哪两个属性进行设置?(选择两个选项) A. id B. type C. name D. class E. scope F. create 答案: A, D Scope 默认值为...
4.5.2 JavaBeans的Scope属性 31 4.7 Tomcat配置 33 4.7.1 Server.xml文件配置 33 4.8 数据库编程 35 4.8.1数据库编程基础及语法 35 4.8.2 本系统中的连接方式 37 第五章 测试问题及解决 38 5.1 java汉字处理问题及...
A、nameB、paramC、propertyD、scope 20、以下方法中,哪一个方法不是HTTPServlet类的方法( B )。 A、doGetB、doServiceC、doPostD、doDelete 21、以下类中,哪一个类不是javax.servlet和javax.servlet.http包中...
A、name B、param C、property D、scope 20、以下方法中,哪一个方法不就是Servlet类得方法( B )。 A、doGet B、doService C、doPost D、doDelete 21、以下类中,哪一个类不就是javax、servlet与...
A、name B、param C、property D、scope 20、以下方法中,哪一个方法不就是HTTPServlet类的方法( B )。 A、doGet B、doService C、doPost D、doDelete 21、以下类中,哪一个类不就是javax、servlet与javax、servlet、...
5-1 属性( Attribute ) 与范围( Scope ) 5-2 与 Servlet 有关的隐含对象 5-3 与 Input / Output 有关的隐含对象 5-4 与 Context 有关的隐含对象 5-5 与 Error 有关的隐含对象 第六章 Expression Language 6-1 EL ...
4.6.1 id和scope属性 4.6.2 标准动作 第5章 作为XML的JSP 5.1 为什么要使用XML相容的语法形式 5.2 关于文本类型的语法 5.2.1 jsp:root元素 5.2.2 公共标识符 5.3 指令 5.3.1 page指令 5.3.2 include指令 ...
4.6.1 id和scope属性 4.6.2 标准动作 第5章 作为XML的JSP 5.1 为什么要使用XML相容的语法形式 5.2 关于文本类型的语法 5.2.1 jsp:root元素 5.2.2 公共标识符 5.3 指令 5.3.1 page指令 5.3.2 include指令 ...
4.6.1 id和scope属性 4.6.2 标准动作 第5章 作为XML的JSP 5.1 为什么要使用XML相容的语法形式 5.2 关于文本类型的语法 5.2.1 jsp:root元素 5.2.2 公共标识符 5.3 指令 5.3.1 page指令 5.3.2 include指令 ...
3.3 JavaBeans的scope属性 57 3.4 JavaBeans应用实例 59 3.4.1 实例1(HelloWord.java) 59 3.4.2 实例2(People.java) 60 3.4.3实例子3数组应用 (Example2_3.java) 60 3.4.4实例子4运算符、...
显示变量的值。 User user = new User(); user.setUserName( "Janet" );... <bean:define id="myName" name="user" property="userName" scope="request"/> <bean:write name="myName"/>
4.6.1 id和scope属性 4.6.2 标准动作 第5章 作为XML的JSP 5.1 为什么要使用XML相容的语法形式 5.2 关于文本类型的语法 5.2.1 jsp:root元素 5.2.2 公共标识符 5.3 指令 5.3.1 page指令 5.3.2 ...
<scope>application</scope> </properties> </destination> 服务名称通过 destination 的 id 属性指定,Flex 前端通过该服务名称来进行远程调用。scope 指定为 application,表示该对象是一个全局对象。 ...