SpringMVC執行流程
SpringMVC執行流程
簡單原理
Spring MVC 框架像許多其他 MVC 框架一樣, 以請求為驅動 , 圍繞一個中心 Servlet 分派請求及提供其他功能,DispatcherServlet 是一個實際的 Servlet (它繼承自 HttpServlet 基類)
當發起請求時被前置的控制器攔截到請求,根據請求參數生成代理請求,找到請求對應的實際控制器,控制器處理請求,創建數據模型,訪問資料庫,將模型響應給中心控制器,控制器使用模型與視圖渲染視圖結果,將結果返回給中心控制器,再將結果返回給請求者
簡單的執行流程
1.DispatcherServlet表示一個前置控制器,是整個SpringMVC的控制中心。
當用戶發出請求,DispatchServlet接收請求並攔截請求。
-
- 我們假設請求的 url 為 : //localhost:8080/SpringMVC/hello
-
- 如上 url 拆分成三部分:
-
- //localhost:8080 ——> 伺服器域名
-
- SpringMVC ——> 部署在伺服器上的 web 站點
-
- hello ——> 表示控制器
-
- 通過分析,如上 url 表示為:請求位於伺服器 localhost:8080 上的 SpringMVC 站點的 hello 控制器
2.HandlerMapping表示處理器映射,所以DispatchSerlvet去調用HandlerMapping,然後HandlerMapping根據url去查找Handler。
3.HandlerExcution表示具體的Handler,主要作用是根據URL去找控制器。
4.HandlerExcution將解析後的資訊傳遞給DispatcherSerlvet。
5.HandlerAdapter表示處理器適配器,它是按照特定的規則去執行Handler。
6.Handler讓具體的Controller執行。
7.Controller將具體的執行資訊返回給HanderAdapter,比如ModelAndView。
8.HandlerAdapter將視圖邏輯名或模型傳遞給DispatcherSerlcet。
9.DispatcheSerlvet調用視圖解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯視圖名。
10.視圖解析器將解析的邏輯視圖名傳遞給DispatcherServlet。
11.DispatcherServlet根據視圖解析器解析的視圖結果,調用具體的視圖。
12.最後呈現給用戶。