先看一張流程圖,實線部分爲spring框架完成,虛線部分(即contronller調用業務層部分)纔是咱們須要動手完成的
前端
1.DispatcherServlet表示前置控制器,是整個SpringMVC的控制中心。用戶發出請求,DispatcherServlet接收請求並攔截請求,web
咱們假設請求的url爲:spring
http://localhost:9999/SpringMVC/input-product服務器
如上url拆分紅三部分:mvc
(1)http://localhost:9999 服務器域名app
(2)SpringMVC部署在服務器(http://localhost:9999)上的web站點框架
(3)input-product表示控制器url
經過分析,如上url表示爲:請求位於服務器localhost:9999上的SpringMVC站點的input-product控制器spa
2.HandlerMapping爲處理器映射。DispatcherServlet調用HandlerMapping,HandlerMapping根據請求url查找Handlerblog
3.HandlerExecution表示具體的Handler,其主要做用是根據url查找控制器,如上url被查找控制器爲:input-product
4.HandlerExecution將解析後的信息傳遞給DispatcherServlet,如解析控制器映射等
5.HandlerAdapter表示處理器適配器,其按照特定的規則去執行Handler
6.Handler讓具體的Controller執行
7.Controller將具體的執行信息返回給HandlerAdapter,如ModelAndView
8.HandlerAdapter將視圖邏輯名或模型傳遞給DispatcherServlet
9.DispatcherServlet調用視圖解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯視圖名
10.視圖解析器將解析的邏輯視圖名傳給DispatcherServlet
11.DispatcherServlet根據視圖解析器解析的視圖結果,調用具體的視圖
12.最終視圖呈現給用戶。
DispatcherServlet就是所謂的SpringMVC前端控制器,做爲整個SpringMVC的控制中心,,其相關UML以下所示:
HandlerMapping主要用來解析請求url,解析出控制器,從而映射控制器,其相關類有16個。
HandlerAdapter主要是調度Controller來處理業務邏輯等,想相關類有6個。
ViewResolver接口主要做用是解析DispatcherServlet傳遞的邏輯視圖名,並將解析結果傳回給DispatcherServlet。實現該接口的相關類或接口共有19個。