spring ----> 几个配置文件和相关类

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的区别?下面参考 https://blog.csdn.net/aattxx/article/details/78171001 

      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是一个空抽象接口。

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

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

加载顺序

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各个组件工作流程:

 

参考文档

spring-framework-4.3.15.RELEASE

转载于:https://www.cnblogs.com/mrray1105/p/9825149.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值