DispatcherServlet的責任:接受請求,根據配置將請求轉發給相應的Controller。由於
DispatcherServlet和Spring IOC容器集成在一塊兒,因此可使用Spring IOC容器的功能。web
DispatcherServlet處理請求的過程以下:圖中的Front Controller就是DispatcherServlet。spring
DispatcherServlet就是一個J2EE servelt,須要在web.xm中就行配置:app
<web-app> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/example/*</url-pattern> </servlet-mapping> </web-app>
全部以/example開頭的請求,都會被名稱爲example的DispatcherServlet實例處理。post
Spring MVC中,容器使用bean來處理請求,這些bean定義在[DispatcherServlet-name]-servlet.xml文件中。url
在Spring MVC中,每個DispatcherServlet都擁有本身的WebApplicationContext,都繼承自root WebApplicationContext。spa
繼承圖以下:code
Spring MVC在初始化DispatcherServlet時,會讀取[DispatcherServlet-name]-servlet.xml 文件,使用裏面定義的bean覆蓋繼承來的同名的bean。orm
由於定義的DispatcherServlet的名稱爲example,因此建立example-servlet.xm文件。xml
DispatcherServlet使用特定的bean來process requests和render the appropriate views。這些特定的bean是Spring MVC的一部分。繼承
能夠在[DispatcherServlet-name]-servlet.xml中指定使用哪些bean。Spring MVC默認會配置一些bean,配置哪些bean在org.springframework.web.servlet包中的DispatcherServlet.properties指定。
一、WebApplicationContext將request封裝爲一個attribute,提供給controller和流程中其餘元素使用。封裝時的默認key爲DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE。
二、The locale resolver is bound to the request to enable elements in the process to resolve the locale to use when processing the request (rendering the view, preparing data, and so on). 若是不須要,能夠不使用。(如何配置,才能不使用?)
三、The theme resolver is bound to the request to let elements such as views determine which theme to use。若是不須要,能夠不使用。(如何配置,才能不使用?)
四、若是配置了multipart file resolver,Spring MVC會檢查request是否爲multiparts,若是是,request會被包裝爲MultipartHttpServletRequest。
五、查詢是否有相應的handler。若是有,則執行handler相關的execution chain(preprocessors, postprocessors, and controllers)。
六、若是返回了Model,則render view。反之則不render。
能夠經過在web.xml中使用servelet初始化參數,能夠客製化DispatcherServlet。
使用<init-param>進行配置。能夠配置的參數以下:
contextClass:實現了WebApplicationContext的類,用於建立Servlet關聯的context,默認爲XmlWebApplicationContext。
contextConfigLocation:指定配置文件存放路徑。可使用逗號分隔,用於指定多個context。若是在不一樣的context中定義了相同的bean,使用最後定義的那一個。
namespace:配置WebApplicationContext的namespace,默認爲[ DispatcherServlet-name]-servlet。