基于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
分享到:
相关推荐
`DispatcherServlet`的初始化流程体现了SpringMVC设计的灵活性和模块化,使得开发者可以通过配置文件轻松定制框架的行为。 总结来说,`DispatcherServlet`的初始化流程主要包括配置文件的加载、初始化参数的设置、...
1. 容器初始化:SpringMVC 会初始化 DispatcherServlet,加载配置文件,扫描并实例化所有 Controller 类。 2. 单次请求工作流程:当收到 HTTP 请求时,DispatcherServlet 会根据请求路径查找匹配的 HandlerMapping,...
1. **核心配置文件**:SpringMVC的配置通常在`dispatcher-servlet.xml`中进行,这是SpringMVC的前端控制器DispatcherServlet的初始化参数。这个文件定义了处理器映射器、视图解析器、异常处理器等关键组件。 2. **...
在构建基于Spring MVC的Web应用程序时,`web.xml`配置文件扮演着至关重要的角色。它定义了应用程序的行为,包括启动时的初始化、请求处理以及中间件的设置。下面我们将详细探讨`web.xml`中涉及Spring MVC的主要配置...
总结,SpringMVC的处置流程始于Web应用的初始化,包括ContextLoaderListener加载根上下文和DispatcherServlet初始化子上下文。接着,DispatcherServlet负责接收和分发请求,通过HandlerMapping找到处理器,...
1. **启动阶段**:项目启动时,Spring容器初始化,加载配置文件,创建并管理所有Bean,包括SpringMVC的DispatcherServlet、Controller、Service和MyBatis的SqlSessionTemplate等。 2. **请求处理**:用户发送HTTP...
5. **初始化监听器**:Spring MVC支持`ServletContextListener`,这些监听器在应用启动时执行特定任务,如初始化数据源、加载配置等。 6. **注册拦截器**:通过`addInterceptor`方法,可以添加自定义的拦截器,比如...
### SpringMVC配置文件详解 #### 一、配置分发器 DispatcherServlet ...通过以上两个方面的详细配置,我们可以实现对SpringMVC的基本初始化和映射响应器的自定义配置,从而更好地控制应用的行为和处理逻辑。
在源码中,你可以看到DispatcherServlet的配置文件(可能为`web.xml`),其中定义了Servlet的初始化参数以及映射路径。 接着,Controller层是业务逻辑处理的主要部分。在本示例中,你将找到处理增删改查操作的类,...
2. **配置DispatcherServlet**:在web.xml中配置SpringMVC的入口点,包括加载配置文件、初始化参数等。 3. **编写配置文件**:创建spring-servlet.xml,配置HandlerMapping、ViewResolver、数据源、事务管理器等。 4...
在SpringMVC中,ApplicationContext被用来加载配置和初始化控制器。 4. **spring-beans.jar**:包含BeanFactory,这是Spring的核心容器,负责实例化、配置和管理Java对象。它是ApplicationContext的基础,处理bean...
DispatcherServlet的初始化配置一般在web.xml中完成,通过配置`<servlet-context>`标签来定义SpringMVC的配置文件路径。 Spring的父容器通常由我们的主配置文件(如applicationContext.xml)创建,它包含了整个应用...
首先,`web.xml`是Web应用的部署描述符,它定义了应用的初始化参数、Servlet、过滤器和监听器等关键组件。对于SpringMVC、Spring和MyBatis的整合,`web.xml`起着至关重要的作用。 1. **SpringMVC配置**: - **...
【SpringMvc 4.0】 SpringMvc 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一...此外,配置了 ContextLoaderListener 监听器,该监听器会在 Web 应用启动时初始化 Spring 容器,加载 applicationContex
- **初始化阶段**:SpringMVC在应用启动时会加载配置,如Servlet配置、Bean定义等。 - **请求处理**: 1. DispatcherServlet接收到请求,通过HandlerMapping找到对应的Controller。 2. HandlerAdapter将请求传递...
启动服务器初始化过程包括执行 ServletContainersInitConfig 类、初始化 web 容器、执行 createServletApplicationContext 方法、加载 SpringMVC 的配置类 SpringMvcConfig、加载 UserController、执行 @...
- **初始化阶段**:启动服务器时,根据`web.xml`的配置加载前端控制器`DispatcherServlet`。在加载过程中,`DispatcherServlet`会执行一系列初始化操作,如加载配置文件、初始化视图解析器等。 - **请求处理**:当...
2. **配置DispatcherServlet**:在web.xml中配置DispatcherServlet,并设置其初始化参数,如加载配置文件的位置。 ```xml <servlet-name>dispatcher <servlet-class>org.springframework.web.servlet....
4. **配置ExtJS**:在前端,需要配置ExtJS的Store,设置URL指向SpringMVC的Controller,加载和更新数据。同时,定义TreePanel,设置store和节点模型,以呈现数据。 5. **渲染视图**:在HTML页面中引入ExtJS库,创建...
5. **数据绑定**:EasyUI可以通过JSON数据源与后台进行数据交互,实现数据的动态加载和更新。 6. **事件处理**:通过监听组件的事件,如点击、双击等,可以方便地实现业务逻辑。 综上所述,"基于SpringMVC+EasyUI+...