`
longdick
  • 浏览: 584796 次
  • 性别: Icon_minigender_1
  • 来自: 0
社区版块
存档分类
最新评论

基于springmvc的web应用初始化流程和配置加载注意点

阅读更多

基于springmvc的web应用在初始化时做了什么?application context何时加载?有几种加载方式?

 

和所有的java web框架一样,springmvc实际上就是在典型的servlet处理request的流程上再包裹了一层而已。springmvc的初始化流程也同样和容器初始化servlet流程一样。容器初始化servlet上下文的流程如下,servlet context一般而言就是那个web.xml里设定上下文环境。

 

springmvc中最典型的ServletContextListener实现就是ContextLoaderListener,其重写的contextInitialized方法
定义了spring在初始化servletContext时的一些动作。
其会加载由context-param参数contextConfigLocation中指定的spring application context配置文件。
配置如下:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml /WEB-INF/applicationContext2.xml
        </param-value>
    </context-param>

 

使用 contextConfigLocation 加载指定路径的配置文件时,多个配置文件可以用逗号,冒号,空格, \t,\n 中任一个来分隔。

如果没有指定contextConfigLocation 参数,ContextLoaderListener会默认加载/WEB-INF/applicationContext.xml这个配置文件。

springmvc将由ContextLoaderListener 载入的application context 叫做 "root application context" ,以区别于servlet的application context。

ServletContextListener在servlet context里的配置参考如下:

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
 


如果没有在servlet context里配置,就不存在"root application context"。

springmvc可以配置多个servlet,每一个 servlet都拥有各自的application context,相互之间不能相互访问。但是"root application context"却是对所有servlet都是可见的。

如果servlet直接使用DispatcherServlet,其application context在DispatcherServlet的init 方法被调用时初始化。
servlet application context的加载策略类似于root application context,首先会查找是否配置了servlet的init-param "contextConfigLocation",如果有,就使用 contextConfigLocation 指定的路径加载的配置文件时,多个配置文件可以用逗号,冒号,空格, \t,\n 中任一个来分隔。


如果没有指定"contextConfigLocation"参数,则会在   /WEB-INF/下查找 "servlet-name"+"-servlet.xml" 这样的文件加载。如下配置所示,就是/WEB-INF/springDispatcherServlet-servlet.xml

<servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/servlet-applicationContext.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/mvc/*</url-pattern>
    </servlet-mapping>

 


最后,该servlet application context将root application context设置为parent,然后加载完成。

以后在应用里调用applicationContext或者beanFactory的getBean方法去获取实例的时候,都是先尝试从父级application context获取,获取不到,再到当前application context里获取。

除此之外,我们还可以在某个类里以编程式加载application context,比如使用ClassPathXmlApplicationContext或FileSystemXmlApplicationContext。不过这样加载的application context和root application context和servlet application context 分属于不同的可见范围。

  • 大小: 35.3 KB
2
0
分享到:
评论

相关推荐

    SpringMVC源码剖析(三)- DispatcherServlet的初始化流程1

    `DispatcherServlet`的初始化流程体现了SpringMVC设计的灵活性和模块化,使得开发者可以通过配置文件轻松定制框架的行为。 总结来说,`DispatcherServlet`的初始化流程主要包括配置文件的加载、初始化参数的设置、...

    初识SpringMVC以及springmvc基本应用入门案例彩色PPT版本.pptx

    1. 容器初始化:SpringMVC 会初始化 DispatcherServlet,加载配置文件,扫描并实例化所有 Controller 类。 2. 单次请求工作流程:当收到 HTTP 请求时,DispatcherServlet 会根据请求路径查找匹配的 HandlerMapping,...

    SpringMVC一些配置文件的demo

    1. **核心配置文件**:SpringMVC的配置通常在`dispatcher-servlet.xml`中进行,这是SpringMVC的前端控制器DispatcherServlet的初始化参数。这个文件定义了处理器映射器、视图解析器、异常处理器等关键组件。 2. **...

    详解Spring mvc的web.xml配置说明

    在构建基于Spring MVC的Web应用程序时,`web.xml`配置文件扮演着至关重要的角色。它定义了应用程序的行为,包括启动时的初始化、请求处理以及中间件的设置。下面我们将详细探讨`web.xml`中涉及Spring MVC的主要配置...

    SpringMVC 处置流程分析

    总结,SpringMVC的处置流程始于Web应用的初始化,包括ContextLoaderListener加载根上下文和DispatcherServlet初始化子上下文。接着,DispatcherServlet负责接收和分发请求,通过HandlerMapping找到处理器,...

    spring+springmvc+mybatis web项目

    1. **启动阶段**:项目启动时,Spring容器初始化,加载配置文件,创建并管理所有Bean,包括SpringMVC的DispatcherServlet、Controller、Service和MyBatis的SqlSessionTemplate等。 2. **请求处理**:用户发送HTTP...

    Spring MVC启动时初始化的几个常用方法

    5. **初始化监听器**:Spring MVC支持`ServletContextListener`,这些监听器在应用启动时执行特定任务,如初始化数据源、加载配置等。 6. **注册拦截器**:通过`addInterceptor`方法,可以添加自定义的拦截器,比如...

    SpringMVC配置文件

    ### SpringMVC配置文件详解 #### 一、配置分发器 DispatcherServlet ...通过以上两个方面的详细配置,我们可以实现对SpringMVC的基本初始化和映射响应器的自定义配置,从而更好地控制应用的行为和处理逻辑。

    SpringMVC demo 完整源码实例.zip

    在源码中,你可以看到DispatcherServlet的配置文件(可能为`web.xml`),其中定义了Servlet的初始化参数以及映射路径。 接着,Controller层是业务逻辑处理的主要部分。在本示例中,你将找到处理增删改查操作的类,...

    SpringMVC+mysql框架

    2. **配置DispatcherServlet**:在web.xml中配置SpringMVC的入口点,包括加载配置文件、初始化参数等。 3. **编写配置文件**:创建spring-servlet.xml,配置HandlerMapping、ViewResolver、数据源、事务管理器等。 4...

    SpringMVC最小配置所需jar

    在SpringMVC中,ApplicationContext被用来加载配置和初始化控制器。 4. **spring-beans.jar**:包含BeanFactory,这是Spring的核心容器,负责实例化、配置和管理Java对象。它是ApplicationContext的基础,处理bean...

    Spring和SpringMVC父子容器关系

    DispatcherServlet的初始化配置一般在web.xml中完成,通过配置`&lt;servlet-context&gt;`标签来定义SpringMVC的配置文件路径。 Spring的父容器通常由我们的主配置文件(如applicationContext.xml)创建,它包含了整个应用...

    SpringMVC+Spring+ mybatis 框架 简单配置

    首先,`web.xml`是Web应用的部署描述符,它定义了应用的初始化参数、Servlet、过滤器和监听器等关键组件。对于SpringMVC、Spring和MyBatis的整合,`web.xml`起着至关重要的作用。 1. **SpringMVC配置**: - **...

    SpringMvc(4.0)+hibernate(4.0)

    【SpringMvc 4.0】 SpringMvc 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一...此外,配置了 ContextLoaderListener 监听器,该监听器会在 Web 应用启动时初始化 Spring 容器,加载 applicationContex

    springMVC笔记详细流程图思维导图

    - **初始化阶段**:SpringMVC在应用启动时会加载配置,如Servlet配置、Bean定义等。 - **请求处理**: 1. DispatcherServlet接收到请求,通过HandlerMapping找到对应的Controller。 2. HandlerAdapter将请求传递...

    SSM-SpringMVC

    启动服务器初始化过程包括执行 ServletContainersInitConfig 类、初始化 web 容器、执行 createServletApplicationContext 方法、加载 SpringMVC 的配置类 SpringMvcConfig、加载 UserController、执行 @...

    SpringMVC教程及实现原理

    - **初始化阶段**:启动服务器时,根据`web.xml`的配置加载前端控制器`DispatcherServlet`。在加载过程中,`DispatcherServlet`会执行一系列初始化操作,如加载配置文件、初始化视图解析器等。 - **请求处理**:当...

    配置springmvc的spring-webmvc的jar包

    2. **配置DispatcherServlet**:在web.xml中配置DispatcherServlet,并设置其初始化参数,如加载配置文件的位置。 ```xml &lt;servlet-name&gt;dispatcher &lt;servlet-class&gt;org.springframework.web.servlet....

    springmvc+extjs4实例树

    4. **配置ExtJS**:在前端,需要配置ExtJS的Store,设置URL指向SpringMVC的Controller,加载和更新数据。同时,定义TreePanel,设置store和节点模型,以呈现数据。 5. **渲染视图**:在HTML页面中引入ExtJS库,创建...

    基于springmvc+easyui+权限控制的后台管理系统带数据库文件可直接运行

    5. **数据绑定**:EasyUI可以通过JSON数据源与后台进行数据交互,实现数据的动态加载和更新。 6. **事件处理**:通过监听组件的事件,如点击、双击等,可以方便地实现业务逻辑。 综上所述,"基于SpringMVC+EasyUI+...

Global site tag (gtag.js) - Google Analytics