applicationContext.xml ----> spring 全局配置文件,装配表现层以外的bean,比如数据源,事务,jdbc模板,mybatis集成,hibernate集成等等。配置文件默认在/WEB-INF/applicationContext.xml

xxx-servlet.xml  ----> spring MVC的配置文件,也就是表现层配置文件,建议只装配表现层Bean。xxx表示DispatcherServlet的Servlet名字,配置文件默认在/WEB-INF/xxx-servlet.xml

web.xml ----> web工程配置文件

  ①配置spring的全局配置文件的位置和spring MVC的配置文件的位置

    如果spring MVC的配置文件的位置没有配置,那么默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml

  ②web.xml中配置的两个重要的类:  

  org.springframework.web.context.ContextLoaderListener ----> 负责查找配置文件/WEB-INF/applicationContext.xml,并加载该配置文件

  org.springframework.web.servlet.DispatcherServlet ----> 负责协调和组织各个组件完成用户请求处理[处理请求,分发请求,如转发,重定向等操作]并返回响应工作

       

      ContextLoaderListener和DispatcherServlet的区别?下面参考 

      ContextLoaderListener和DispatcherServlet都会在Web容器启动的时候加载一下bean配置. 区别在于:

      1 DispatcherServlet一般会加载MVC相关的bean配置管理(如: ViewResolver, Controller, MultipartResolver, ExceptionHandler, etc.)

      2 ContextLoaderListener一般会加载整个Spring容器相关的bean配置管理(如: Log, Service, Dao, PropertiesLoader, etc.)

      DispatcherServlet默认使用WebApplicationContext作为上下文。值得注意的是, DispatcherServlet的上下文仅仅是Spring MVC的上下文, 而ContextLoaderListener的上下文则对整个Spring都有效。一般Spring web项目中同时会使用这两种上下文.

  ③web.xml几个标签:

<context-param/>,<listener/>,<filter/>,<servlet/>(web.xml加载顺序)



1 <context-param/>  <!--上下文参数:声明应用范围内的初始化参数,会被转换为key-value的形式-->
 2   <param-name/>,<param-value/>
 3 <listener/> <!--声明监听器-->
 4   <listener-class/>
 5 <filter/> <!--声明过滤器-->
 6   <filter-name/>,<filter-class/>,<init-param/>
 7 <filter-mapping/> <!-mapping必须出现在filter之后,当请求资源匹配mapping时,mapping有顺序之分-->
 8   <filter-name/>,<url-pattern/>
 9 <servlet/> <!--声明servlet-->
10   <servlet-name/>,<servlet-class/>,<init-param/>
11     <load-on-startup/> <!--告知servlet的启动顺序,数值是整数,大于等于0时,启动时按顺序加载Servlet,数值越低,该Servlet越先启动-->
12 <servlet-mapping/> <!-mapping必须出现在Servlet之后,当请求资源匹配mapping时,mapping有顺序之分-->
13   <servlet-name/>,<url-pattern/>
14 <session-config/> <!--声明会话超时,单位min-->
15   <session-timeout/>
16 <error-page/> <!--声明错误页面,异常和404等状态码映射到指定页面-->
17   <error-code/>,<location/>,<exception-type/>



自定义spring MVC的配置文件位置,<servlet/>标签内的<init-param/>标签内指定配置文件的位置,如下所示:



1     <!-- spring MVC 配置内容 -->
 2     <servlet>
 3         <servlet-name>springMVCServlet</servlet-name>
 4         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 5         <init-param>
 6             <param-name>contextConfigLocation</param-name>
 7             <param-value>classpath:spring/springmvc.xml</param-value>
 8         </init-param>
 9         <load-on-startup>1</load-on-startup>
10     </servlet>
11  
12     <servlet-mapping>
13         <servlet-name>springMVCServlet</servlet-name>
14         <url-pattern>/</url-pattern>
15     </servlet-mapping>



ContextLoaderListener类的依赖关系图如下,ContextLoaderListener实现了ServletContextListener的两个抽象方法,EventListener是一个空抽象接口。

javamelody spring 配置 java spring 配置文件在哪里_spring

DispatcherServlet类的依赖关系图如下,Serializable和Aware是一个空的抽象接口。

什么是Aware?Aware的作用是什么?Spring提供了一系列Aware接口,允许bean向容器指示它们需要某种基础结构依赖。例如EnvironmentAware接口,该接口便拥有感知spring 容器的能力,可以获得spring 容器的服务,从而获得环境相关的属性值。

javamelody spring 配置 java spring 配置文件在哪里_spring_02

加载顺序

tomcat startup ----> DispatcherServlet instantiated ----> DispathcerServlet inited

  ①加载web.xml,初始化参数 ②建立WebapplicationContext容器 ③初始化相关组件(HandlerMappings,HandlerAdapters,HandlerExceptionResolvers,ViewResolvers等)

user request coming ----> tomcat recieved request ----> web.xml matched request ----> DispatcherServlet got request ----> DispathcerServlet began deal request ----> doDispatch() [ getHandler() ----> getLastModified() ---->  getHandlerAdapter()  ----> applyPreHandle() ----> handle() ----> applyPostHandle() ----> processDispatchResult() [render()] ----> ???]

spring MVC 组件:

DispatcherServlet, HandlerMapping , Handler(HandlerExecutionChain, ModelAndView), HandlerAdapter, ViewResolver, View

DispatcherServlet:总控制器,调度器

HandlerMapping:根据用户请求url 找到Handler

Handler:后端控制器

HandlerAdapter:执行Handler,返回ModelAndView

ViewResolver:生成View视图,返回view

View:支持多种View视图类型,填充模型数据到request

spring MVC各个组件工作流程:

javamelody spring 配置 java spring 配置文件在哪里_web.xml_03

 

参考文档

spring-framework-4.3.15.RELEASE