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