`
liyixing1
  • 浏览: 971532 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

初始化web配置,使用request、session和 global session作用域的bean

阅读更多
根据你的特定servlet环境,有多种方法来完成这一初始设置...

如果你用Spring Web MVC,即用SpringDispatcherServlet或DispatcherPortlet来处理请求,则不需要做特别的配置:DispatcherServlet 和 DispatcherPortlet已经处理了所有有关的状态

当使用了Spring's DispatcherServlet以外的Servlet 2.4及以上的Web容器时(如使用JSF或Struts),你需要在Web应用的'web.xml'文件中增加 javax.servlet.ServletRequestListener 定义

<web-app>
  ...
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>
  ...
</web-app>
如果你用的是早期版本的web容器(Servlet 2.4以前的版本),那么你要使用一个javax.servlet.Filter的实现。请看下面的web.xml配置片段:

<web-app>
  ..
  <filter>
    <filter-name>requestContextFilter</filter-name>
    <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>requestContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  ...
</web-app>
RequestContextListener和RequestContextFilter两个类做的都是同样的工作: 将HTTP request对象绑定到为该请求提供服务的Thread。 这使得具有request和session作用域的bean能够在后面的调用链中被访问到。
Request作用域

考虑下面bean定义:

<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。

Session作用域

考虑下面bean定义:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例, 且该userPreferences bean仅在当前HTTP Session内有效。 与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例, 将不会看到这些特定于某个HTTP Session的状态变化。 当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。

global session作用域

考虑下面bean定义:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。

请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误。
分享到:
评论

相关推荐

    spring的bean作用域

    - 在portlet环境中,Global Session作用域的Bean在全局portlet会话期间有效,这意味着所有的portlet都可以访问同一个实例。然而,在标准的HTTP会话中,此作用域并不常见。 - 示例配置:`&lt;bean id="role" class=...

    详解Spring中bean的作用域

    在 Spring 中,bean 的作用域可以分为五种:singleton、prototype、request、session 和 global session。这五种作用域类型决定了 bean 的实例化和生命周期的管理方式。 1. Singleton 作用域 Singleton 作用域是...

    详解Spring中Bean的生命周期和作用域及实现方式

    2. 使用Annotation配置:可以使用Annotation来配置Bean的生命周期和作用域。 3. 使用Java配置:可以使用Java代码来配置Bean的生命周期和作用域。 在本文中,我们介绍了Spring中Bean的生命周期和作用域及实现方式。...

    JSP 中Spring Bean 的作用域详解.docx

    不同的作用域会影响Bean的生命周期,生命周期包括初始化、使用和销毁三个阶段。例如,Singleton Bean在容器启动时初始化,而Prototype Bean在每次请求时初始化。 在实际开发中,可以通过配置XML、注解或Java配置类...

    主要用于学习Spring IoC的配置,基于xml的组件类的作用域配置

    同时,还可以通过destroy-method和init-method属性来指定Bean的初始化和销毁时调用的方法,这为Bean的生命周期管理提供了额外的控制。 总结而言,Spring IoC容器的配置是一个复杂但非常重要的主题。它不仅包括了...

    SSH笔记-bean的作用域

    在`SSHnote_Spring_6_Scope`这个文件中,可能包含了关于如何在XML配置文件中定义不同作用域的Bean,以及如何在代码中注入和使用这些Bean的示例和解释。通过学习这部分内容,开发者可以更好地掌握Spring框架的核心...

    Spring框架中Bean的生命周期 Spring中Bean有几种作用域

    在容器管理阶段,Spring容器负责Bean的实例化、属性注入、初始化、使用和销毁。而在用户自定义阶段,开发者可以通过定义回调方法或使用特定注解来介入Bean的生命周期过程。 1. **实例化**:Spring容器通过`Class`...

    详解Spring中bean的scope以后使用

    启用Global Session作用域的方式与Request和Session作用域类似: ```xml &lt;web-app&gt; &lt;listener-class&gt;org.springframework.web.context.request.RequestContextListener &lt;/web-app&gt; ``` **配置示例**: ```...

    【框架源码篇 04】Spring源码手写篇-Bean定义配置化

    Spring支持单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)和全局会话(Global Session)等多种作用域。其中,单例模式是最常见的,确保在整个应用中只有一个Bean实例;而原型模式则每次...

    SPRING FRAMEWORK BEAN作用域和生命周期原理解析

    在 Spring 中,Bean 的作用域可以是 singleton、prototype、request、session、globalSession 等。每个作用域都有其特点和应用场景。 * Singleton 作用域:在 singleton 作用域中,Bean 容器将仅创建一个 Bean 实例...

    浅谈Spring中Bean的作用域、生命周期

    Spring框架中定义了五种作用域,分别是singleton、prototype、request、session和global session。 1. singleton:单例模式,Spring IoC容器中只会存在一个共享的Bean实例,无论有多少个Bean引用它,始终指向同一...

    深入了解Spring中Bean的作用域和生命周期

    Spring 提供了五种作用域:singleton、prototype、request、session 和 globalSession。每种作用域都有其特点和应用场景。 1. Singleton 作用域 Singleton 作用域是 Spring 容器默认的作用域,在这种作用域中, ...

    SpingIOC注入实例化bean

    Spring容器管理bean的生命周期,包括初始化、正常使用和销毁三个阶段。可以通过实现`InitializingBean`接口或定义`init-method`属性来进行初始化操作,通过实现`DisposableBean`接口或定义`destroy-method`属性来...

    spring入门学习-3、Bean装配(XML).pdf

    Spring提供了多种作用域,如`singleton`、`prototype`等,不同的作用域决定了Bean的生命周期和创建策略。 4. **Constructor-arguments**:用于通过构造器注入依赖关系。这种方式通常用于必填的依赖项。 5. **...

    spring bean的生命周期

    - **初始化回调**:Spring支持两种类型的初始化回调方法,即`@PostConstruct`注解的方法和在XML中定义的`init-method`属性指定的方法。 2. **容器管理的生命周期回调** - **Singleton Beans的懒加载**:如果Bean...

    Spring--2.Spring 中的 Bean 配置-2-1

    - Spring支持五种Bean的作用域:singleton(单例)、prototype(原型)、request、session和globalSession。默认是singleton。 - 例如,定义一个prototype作用域的Bean: ```xml &lt;bean id="exampleBean" class=...

    bean学习笔记

    Bean可以有五种不同的作用域:Singleton(单例)、Prototype(原型)、Request、Session和Global Session。Singleton作用域的Bean在整个应用中只有一个实例,而Prototype作用域的Bean每次请求都会创建新的实例。 5...

    浅谈spring中scope作用域

    在使用 request、session、globalsession 作用域时,需要在 web.xml 中配置 ContextListener: ```xml &lt;web-app&gt; ... &lt;listener-class&gt;org.springframework.web.context.request.RequestContextListener &lt;/web...

    SpringBoot之Bean的使用及处理

    3. **Bean的作用域**:Bean有多种作用域,包括Singleton(单例)、Prototype(原型)、Request、Session、GlobalSession等。Singleton是最常见的一种,每个容器只有一个实例;Prototype则每次请求都会创建新的实例。...

    spring bean加载

    - Global Session:在portlet应用中,全局Session作用域。 4. **Bean的生命周期**: - `@PostConstruct`:在Bean实例化后,初始化之前调用的方法。 - `@PreDestroy`:在Bean销毁前调用的方法。 - 初始化回调:...

Global site tag (gtag.js) - Google Analytics