1. 程式人生 > 程式設計 >SpringMVC DispatcherServlet元件實現解析

SpringMVC DispatcherServlet元件實現解析

tomcat容器啟動載入web.xml初始化springmvc相關策略元件

一、WebApplicationContext的層次結構

SpringMVC DispatcherServlet元件實現解析

本來是想研究一下springMVC元件的,結果解決了以前的一個疑問。WebApplicationContext的層次結構

下面是從官網copy的一份web.xml

ContextLoaderListener:初始化一個Root WebApplicationContext:SpringIOC初始化一些中間services+datasouces的Bean

DispatcherServlet:初始化一個Servlet WebApplicationContext:SpringIOC初始化前端controllers+view resovlers+HandleMapping的Bean

父子關係:Servlet WebApplicationContext.setParent(Root WebApplicationContext);子容器找不到就去父容器找。

<web-app>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/app-context.xml</param-value>
  </context-param>

  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app/*</url-pattern>
  </servlet-mapping>
</web-app>

二、DispatcherServlet的元件

servlet.init()時初始化SpringIOC容器外,還有初始化了一部分SpringMVC元件

/* org.springframework.web.servlet.DispatcherServlet#initStrategies 認識一下*/
  protected void initStrategies(ApplicationContext context) {
    initMultipartResolver(context);
    initLocaleResolver(context);
    initThemeResolver(context);
    initHandlerMappings(context);
    initHandlerAdapters(context);
    initHandlerExceptionResolvers(context);
    initRequestToViewNameTranslator(context);
    initViewResolvers(context);
    initFlashMapManager(context);
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。