`

再谈JSP中Bean的作用域Scope

阅读更多

JSP中,创建一个Bean 的时候,需要指定作用域

<jsp:useBean id="beanId" class="class.of.bean" scope="xxx" />

scope 取值范围有四个,从作用域大小来看,从大到小依次是:

application:

session:

request:

page:

许多初学者不容易理解的是request 和page 的区别

实际上,request 是通过 request.setAttribute/getAttribute 存取

而page 就可看成一个纯本地变量,出了当前 jsp文件,就不存在,当然对于<%@ include %> 中的页面也有效。

forward 后,request中的变量还是有效,而page的就无效了。

 

下面一段是在JSP中创建Bean时最终执行的源代码:

private void doSetAttribute(String name, Object o, int scope) {
        if (o != null) {
            switch (scope) {
            case PAGE_SCOPE:
                attributes.put(name, o); // HashMap<String, Object> attributes
                break;

            case REQUEST_SCOPE:
                request.setAttribute(name, o); //ServletRequest request
                break;

            case SESSION_SCOPE:
                if (session == null) {
                    throw new IllegalStateException(Localizer
                            .getMessage("jsp.error.page.noSession"));
                }
                session.setAttribute(name, o); //HttpSession session
                break;

            case APPLICATION_SCOPE:
                context.setAttribute(name, o); //ServletContext context
                break;

            default:
                throw new IllegalArgumentException("Invalid scope");
            }
        } else {
            removeAttribute(name, scope);
        }
    }

 

分享到:
评论

相关推荐

    JSP 中Spring Bean 的作用域详解

    JSP 中Spring Bean 的作用域详解 Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1&gt;singleton: 单例模式,在整个spring IOC容器中,单例模式作用域的Bean都将只生成一个实例。一般Spring...

    jsp获取javaBean数据+scope获取访问次数

    假设我们已经在请求作用域(request scope)中创建了`UserBean`,可以通过以下方式访问其属性: ```jsp ; charset=UTF-8" %&gt; UserBean userBean = (UserBean) request.getAttribute("userBean"); %&gt; 用户名: ...

    jsp Bean 简单应用

    上述代码会检查当前作用域(如 session)是否存在名为 "myBean" 的 JavaBean,如果不存在,则根据指定的类名 "com.example.MyBean" 创建一个新的实例。 ### 4. 设置 JavaBean 属性 ```jsp &lt;jsp:setProperty name=...

    Use-JSP-Bean.zip_site:www.pudn.com

    JSP中的Bean可以有四种作用域:page、request、session和application。Page作用域的Bean仅在当前JSP页面有效,request作用域的Bean在一次HTTP请求中有效,session作用域的Bean在用户会话期间有效,而application...

    Jsp用jspbean的例子

    这个"Jsp用jspbean的例子"提供了一个很好的学习机会,让我们深入理解它们的结合使用。 首先,JSP的核心理念是"视图-控制-模型"(MVC)架构模式。在这个模式中,JSP主要负责视图层的呈现,而Javabean则扮演了模型的...

    JAVA bean 技术.JSP

    这是更常见的方法,它会在指定的作用域内创建或查找Java Bean实例。例如: ```jsp &lt;jsp:useBean id="myBean" class="your.package.YourBean" scope="session"/&gt; ``` 这里的`id`属性定义了Bean的引用名称,`class`...

    jsp标准动作

    * scope 属性:指定了 Bean 的作用域,包括 page、session、request、application 四种。 * type 属性:指定了引用此对象的变量的类型。 * beanName 属性:指定了串行化 Bean 的名称。 jsp 标准动作提供了一种灵活...

    struts bean标签

    - `&lt;bean:scope&gt;`:获取特定作用域内的Bean,如session或request。 4. **实际应用示例** - 在用户登录场景中,我们可以用`&lt;bean:define&gt;`来创建用户对象,然后用`&lt;bean:write&gt;`输出用户名和密码,`&lt;bean:include&gt;...

    JavaBean组件在JSP中的应用

    例如,`&lt;jsp:useBean id="beanName" scope="session" class="package.Class" /&gt;`将bean置于session作用域,使得在同一个会话内的所有请求都能访问到同一bean实例。 总结,JavaBean组件在JSP中的应用主要涉及对象的...

    Bean标签库,用法及实例说明

    根据给定的文件信息,我们可以深入探讨Bean标签库在JavaServer Pages (JSP) 和 Struts 框架中的应用及其重要性。 ### Bean标签库简介 Bean标签库是Struts框架的一部分,它提供了一系列用于操作JavaBeans的标签。...

    JSF 资源 managed bean 课件

    ### JSF Managed Beans知识点概述 ...合理利用Bean的不同作用域以及与JSF框架的紧密集成,能够显著提高应用程序的性能和可维护性。同时,参考提供的学习资源和实践案例,可以帮助初学者快速掌握这些关键技术点。

    JSP之JavaBean实例程序

    这里,`id`是JavaBean在JSP页面中的引用名,`class`是JavaBean的全限定类名,`scope`定义了JavaBean的作用域,如`page`、`request`、`session`或`application`。 3. **设置和获取属性值**:使用`jsp:setProperty`和...

    JSP网页编程PPT学习教案.pptx

    这里的`id`属性是Bean的变量名,`scope`指定了Bean的作用域,而`class`属性则指定了JavaBean的完整类路径。 `&lt;jsp:getProperty&gt;`和`&lt;jsp:setProperty&gt;`则分别用于读取和设置JavaBean的属性值。例如,获取和设置`...

    Struts标签-bean标签-源代码

    通过深入学习和理解bean标签的使用,你可以更高效地处理页面数据,并且能更好地控制JavaBean对象在不同作用域中的生命周期。在实际开发中,配合html标签和logic标签,可以实现更为复杂的页面逻辑,如条件判断、循环...

    JSP 常用的标签以及用法举例

    JSP页面中涉及到四种不同的作用域:page、request、session和application。 1. **page作用域** - **说明**: 只在当前页面有效。 - **示例**: 在当前页面中设置的属性只能在本页面访问。 2. **request作用域** -...

    JSP测试题1(有答案)

    scope 属性用于设置 Bean 的作用域,可以是 page、request、session 或 application。 3. 在 JSP 中,表达式 &lt;%=A+B%&gt; 的输出结果是 A+B。 知识点:JSP 表达式用于在 JSP 页面中执行 Java 代码。表达式 &lt;%=A+B%&gt; ...

    Jsp7打动作的资料

    `id`属性定义了Bean的引用名,`class`属性指定了Bean的全限定类名,`scope`属性定义了Bean的作用域,可选值包括`page`, `request`, `session`, `application`。例如: ```jsp &lt;jsp:useBean id="myBean" class=...

    jsp调用javabean的问题

    这里的`id`属性定义了JavaBean在页面作用域内的引用名,`class`属性指定了JavaBean的全限定类名,`scope`属性定义了JavaBean的作用范围,可以是page、request、session或application。 当JSP遇到`&lt;jsp:useBean&gt;`...

    javabean.ppt

    &lt;jsp:useBean id="idname" scope="bean的作用域" class="创建Bean的类名" /&gt; ``` 这里的`idname`是Bean的标识符,`scope`指定了Bean的作用域,可以是`page`、`request`、`session`或`application`,分别对应不同的...

Global site tag (gtag.js) - Google Analytics