• SpringMVC——DispatcherServlet


    SpringMVC——DispatcherServlet

    1、DispatcherServlet

    SpringMVC框架是围绕 DispatcherServlet 设计的,它处理所有的 HTTP 请求和响应。

    • 作用:

      DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,

      都将被它拦截,经过处理后再分发给不同的控制器!

    • 配置(必要的配置):

      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
              http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
          version="3.1">
      
          <!-- 配置前端控制器(DispatcherServlet) -->
          <servlet>
              <servlet-name>HelloWeb</servlet-name>
              <servlet-class>
                  org.springframework.web.servlet.DispatcherServlet
              </servlet-class>
              <load-on-startup>1</load-on-startup><!-- 表示容器(Tomcat)在启动时立即加载这个 DispatcherServlet-->
          </servlet>
          <servlet-mapping>
              <servlet-name>HelloWeb</servlet-name>
              <url-pattern>*.do</url-pattern>
          </servlet-mapping>
      </web-app>
      
    • 加载Spring-web.xml配置文件的两个时机

      • 第一个:

        在 SpringMVC 项目启动时,会依据 web.xml 配置文件中所配置的监听器:ContextLoaderListener去加载对应位置下的 Spring 配置文件。

      <web-app ...>
          ...
          <listener>
              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
          </listener>
          <context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>
                  classpath:spring/spring-dao.xml,
                  classpath:spring/spring-service.xml
              </param-value>
          </context-param>
          ...
      </web-app>
      
      • 第二个:

        无论该监听器有没有配置,那么 Spring MVC 都会继续进入第二个加载配置文件时机,根据 DispatcherServlet 的初始化配置(init-param)加载对应位置的 Spring 配置文件:

      <web-app ...>
          ...
          <servlet>
              <servlet-name>...</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:spring-web.xml</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
          </servlet>
      
          <servlet-mapping>
              ...
          </servlet-mapping>
      </web-app>
      
      • 如果 init-param 没有配置,那么默认相当于是:
      <init-param>
          <param-name>contextConfigLocation</param-name>
            <param-value>WebContent/WEB-INF/[servlet-name]-servlet.xml</param-value>
      </init-param>
      

      注意:

      SpringMVC 首先加载的是 context-param配置的内容,而并不会去初始化 servlet。只有进行了网站的跳转,经过了 DispatcherServlet 的导航的时候,才会初始化 servlet,从而加载 init-param 中的内容。

    一般而言,context-param配置的 Spring 配置文件,习惯性叫 applicationContext,或 webApplicationContext,表示全局性的 Spring 配置。init-param 配置的 Spring 配置文件可以叫 spring-mvc,表示 spirng-webmvc (web 层)相关的 Spring 配置。

  • 相关阅读:
    互联网协议入门
    【HTTP】图解HTTPS
    《计算机本科生理想的学习计划》
    VC++ TinyXML
    TinyXML 在vs2010 VC++使用
    Hadoop2.4.1入门实例:MaxTemperature
    xcode6
    Android利用广播监听设备网络连接(断网)的变化情况
    编程算法
    Google的Guava之IO升华
  • 原文地址:https://www.cnblogs.com/whitespaces/p/12450558.html
Copyright © 2020-2023  润新知