SpringMVC是一種基于Java語言開發,實現了WebMVC設計模式,請求驅動類型
的輕量級Web框架。
采用了MVC架構模式的思想,通過把Model,View,Controller分離,將Web層進
行職責解耦,從而把復雜的Web應用分成邏輯清晰的幾個組件,在SpringMVC中有
9大重要的組件。
下面詳細說明一下這些組件的作用和初始化方法:
1、MultipartResolver文件處理器
對應的初始化方法是initMultipartResolver(context),用于處理上傳請求。
2、LocaleResolver當前環境處理器
其對應的初始化方法是initLocaleResolver(context)
SpringMVC主要有兩個地方用到了Locale:
一是ViewResolver視圖解析的時候;
二是用到國際化資源或者主題的時候。
3、ThemeResolver主題處理器
其對應的初始化方法是initThemeResolver(context),
用于解析主題。也就是解析樣式、圖片及它們所形成的顯示效果的集合。
4、HandlerMapping處理器映射器
其對應的初始化方法是initHandlerMappings(context),
在SpringMVC中會有很多請求,每個請求都需要一個Handler處理。
HandlerMapping的作用便是找到請求相應的處理器Handler和Interceptor。
5、HandlerAdapter處理器適配器
其對應的初始化方法是initHandlerAdapters(context)
從名字上看,它就是一個適配器。HandlerAdapters要做的事情就是如何讓固定的
Servlet處理方法調用靈活的Handler來進行處理
6、HandlerExceptionResolver異常處理器
對應的初始化方法是initHandlerExceptionResolvers(context)
它的主要作用是處理其他組件產生的異常情況。
7、RequestToViewNameTranslator視圖名稱翻譯器
其對應的初始化方法是initRequestToViewNameTranslator(context)
它的作用是從請求中獲取ViewName。
有的Handler處理完后并沒有設置View也沒有設置ViewName,這時就需要從
request中獲取,而RequestToViewNameTranslator就是為request提供獲取
ViewName的實現。
8、ViewResolvers頁面渲染處理器
其對應的初始化方法是initViewResolvers(context)
ViewResolvers的主要作用是將String類型的視圖名和Locale解析為View類型的視
圖。
9、FlashMapManager參數傳遞管理器
其對應的初始化方法是initFlashMapManager(context)
在實際應用中,為了避免重復提交,我們可以在處理完post請求后重定向到另外一個
get請求,這個get請求可以用來返回頁面渲染需要的信息。
FlashMap就是用于這種請求重定向場景中的參數傳遞。
在SpringMVC的九大組件中,涉及到請求處理響應的核心組件分別是:
1.HandlerMapping、
2.HandlerAdapter、
3.ViewResolver
這張圖表示這三個組件的整體執行流程,具體調用分為以下幾個步驟:

1、HandlerMapping回到調用HandlerAdapter
2、HandlerAdapter會返回ModelAndView
3、ModelAndView根據用戶傳入參數得到ViewResolvers
4、ViewResolvers會將用戶傳入的參數封裝為View,交給引擎進行渲染。
注意:有大家最熟悉的兩個類:ModelAndView和View類并不屬于SpringMVC九
大組件之列。