spring通过在web.xml 中配置ContextLoaderListener 来加载context配置文件,在DispatcherServlet中也可以来加载spring context配置文件,那么这两个有什么区别呢。
ContextLoaderListener中加载的context成功后,spring 将 applicationContext存放在ServletContext中key值为"org.springframework.web.context.WebApplicationContext.ROOT"的attribute中。(servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context));可以通过WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)或WebApplicationContextUtils.getWebApplicationContext(servletContext)方法来获取对应的applicationContext。
DispatcherServlet加载的context成功后,如果 publishContext属性的值设置为true的话(缺省为true) 会将applicationContext存放在org.springframework.web.servlet.FrameworkServlet.CONTEXT. + (servletName)的attribute中。
例如 web.xml中配置如下
- <servlet>
- <servlet-name>mvcServlet</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:/spring/config/applicationContextMVC.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
则对应的applicationContext的attribute key值为org.springframework.web.servlet.FrameworkServlet.CONTEXT.mvcServlet。
在每次request请求时,DispatcherServlet会将此applicationContext存放在request中attribute值为 org.springframework.web.servlet.DispatcherServlet.CONTEXT中(request.setAttribute(WEB_APPLICATION_CONTEXT_ATTRIBUTE,getWebApplicationContext());)。可以通过 RequestContextUtils.getWebApplicationContext 或 WebApplicationContextUtils.getWebApplicationContext(servletContext,attrname)方法 来获取对应的applicationContext。
从上面的分析可以看出,DispatcherServlet所加载的applicationContext可以认为是mvc私有的context,由于保存在servletContext中的key值与通过ContextLoaderListener加载进来的applicationContext使用的key值不相同,因此如果只使用DispatcherServlet加载context的话,如果程序中有地方使用WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext) 来试图获取applicationContext时,就会抛出"No WebApplicationContext found: no ContextLoaderListener registered?"的exception。
相关推荐
当Web应用启动时,ContextLoaderListener会读取Web-INF下的applicationContext.xml配置文件,创建并加载Spring容器。这个容器包含了所有的bean定义,包括服务层、数据访问层等组件。通过这种方式,...
`ContextLoaderListener`与`DispatcherServlet`的区别 `ContextLoaderListener`创建的是全局ApplicationContext,用于处理全局范围的Bean,而`DispatcherServlet`创建的是Servlet相关的ApplicationContext,主要...
4. **Spring MVC**:`ContextLoaderListener`初始化的ApplicationContext与Spring MVC的DispatcherServlet所使用的ApplicationContext不同。前者是全局的父上下文,而后者是用于处理HTTP请求的子上下文。两者之间...
- ContextLoaderListener会先加载`applicationContext.xml`,初始化Spring的ApplicationContext。 - 接着,DispatcherServlet加载`servlet-context.xml`,启动SpringMVC的配置。 - 当接收到HTTP请求时,...
在SSM框架中,web.xml主要配置DispatcherServlet(SpringMVC的前端控制器)、ContextLoaderListener(加载Spring的根应用上下文)和Filter(如字符编码过滤器)。 - DispatcherServlet配置:用于映射请求,一般...
`ContextLoaderListener`负责创建全局的ApplicationContext,它作为应用的根上下文,通常用于存放与Web应用相关的全局配置和服务。而`DispatcherServlet`则创建自己的WebApplicationContext,主要用来管理控制器...
"配置DispatcherServlet的方法介绍" DispatcherServlet是Spring MVC的前端控制器,是一个核心组件,负责处理HTTP请求和响应。在Spring MVC中,DispatcherServlet是一个centralized servlet,它处理所有的HTTP请求,...
ContextLoaderListener负责加载Spring配置文件,初始化Spring容器;DispatcherServlet负责请求分发。 - 配置DispatcherServlet:DispatcherServlet是Spring MVC的核心,需要在web.xml中指定Servlet名称和类路径,并...
- **Spring MVC配置**:这个文件是DispatcherServlet的特定ApplicationContext配置,包含关于Controller、ViewResolver、HandlerMapping等的配置。例如,定义Bean来处理HTTP请求,配置视图解析器以决定如何渲染结果...
DispatcherServlet负责处理HTTP请求,而ContextLoaderListener则初始化Spring的ApplicationContext。 3. **配置Spring上下文**:创建Spring的配置文件(如`applicationContext.xml`),在此文件中定义Bean,包括...
此外,还可以配置Spring的ContextLoaderListener,该监听器会加载`applicationContext.xml`,使得Spring的IoC容器能够在Web应用启动时初始化。 4. **Spring4的新特性**: - **Java配置**:Spring4增强了对Java配置...
在这个文件中,我们配置了ContextLoaderListener来加载`applicationContext.xml`,CharacterEncodingFilter确保请求的字符编码为UTF-8,以及DispatcherServlet作为主要的请求处理器。 - **ContextLoaderListener**...
Spring提供了一个名为`ContextLoaderListener`的监听器,它自动加载配置文件,创建ApplicationContext,并将其存储到Servlet上下文(ServletContext)中。这样,我们可以通过`WebApplicationContextUtils`工具类的...
这是Spring MVC应用程序的入口点,用于配置Spring的ContextLoaderListener和DispatcherServlet。 1. `<context-param>` 和 `<listener>` 部分: - `<context-param>` 用于定义应用程序上下文的初始化参数,这里...
- 配置Web.xml:设置过滤器和监听器,例如Spring的ContextLoaderListener和DispatcherServlet。 - 配置Spring的ApplicationContext.xml:定义bean,包括数据源、事务管理器、DAO接口的实现类等。 - 配置MyBatis的...
在 web.xml 文件中,我们可以使用 ContextLoaderListener 来初始化 Root WebApplicationContext,然后使用 DispatcherServlet 来初始化 Servlet WebApplicationContext。代码示例: ```xml <listener-class>org....
5. **配置web.xml**:这是Web应用的部署描述符,需要配置DispatcherServlet和监听器,例如ContextLoaderListener用于加载Spring的ApplicationContext。 6. **编写Controller**:创建SpringMVC的Controller类,这些...
- **Spring MVC 的配置**:通常需要配置 DispatcherServlet 和 ContextLoaderListener,以便正确加载上下文和初始化框架。 - **单元测试**:为了确保 Web 层的正确性和健壮性,可以为 Controller 编写单元测试,...
- `listener`:`ContextLoaderListener` 监听器加载上下文配置文件,初始化 Spring 容器。 - `filter` 和 `filter-mapping`:字符编码过滤器 `CharacterEncodingFilter` 用于确保输入和输出数据的编码一致,这里...
首先,需要在`web.xml`中配置Spring的ContextLoaderListener和DispatcherServlet,启动Spring容器。然后,创建`applicationContext.xml`配置文件,定义Bean的实例化、装配和管理。Spring还能整合Struts2,通过`...