spring-mvc启动(一)

1 基本依懒

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

2 servlet容器(tomcat)读取 web.xml 配置并初始化

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>spring-mvc</display-name>
  <!--root context 配置-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring-application.xml</param-value>
  </context-param>
  <!--1.监听web容器的启动,并初始化一个根application context-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--2.servlet容器 把扫描到的servlet,并初始该servlet -->
  <servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:spring-mvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <listener>
    <listener-class>com.xie.java.mvc.MyServletListener</listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

3 创建spring root webapplicatoncontext

servlet 启容器启动后,上面的ContextLoaderListener监听到容器启动后,创建一个webapplicatoncontext (该application context 是spring context)并初化它 ,作为root context 下面是继承结构及启动源码

《spring-mvc启动(一)》
下面是 initWebApplicationContext 方法大概做的一些事情
《spring-mvc启动(一)》

4 DispatcherServlet 初始化

完成context 初化,接下来就是dispatchServlet初始化,还是先看一下继承结构图,再看具体源码
《spring-mvc启动(一)》

首先servlet容器会调用该servlet 的init(config)方法
《spring-mvc启动(一)》
《spring-mvc启动(一)》

创建servletcontext,获取root context 并创建servlet的子context
《spring-mvc启动(一)》

5 请求策略初始化

前面只是spring-mvc容器准备阶段,下面才是spring-mvc开始策略初化,包含9种策略
《spring-mvc启动(一)》

最后来一个调用链图
《spring-mvc启动(一)》

    原文作者:Spring MVC
    原文地址: https://blog.csdn.net/yangyangiud/article/details/79797395
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞