什麼是 Spring MVC 學習某一樣東西之前,我們一定要大致知道這個東西是什麼,能幹什麼,為什麼要用它。 Spring MVC 是一個開源平臺,一個基於 Spring 的 MVC 框架,它支持基於 Java 開發 Web 應用程式。MVC 架構很利於開發靈活、低耦合的 Web 應用程式組件。 M ...
什麼是 Spring MVC
學習某一樣東西之前,我們一定要大致知道這個東西是什麼,能幹什麼,為什麼要用它。
Spring MVC 是一個開源平臺,一個基於 Spring 的 MVC 框架,它支持基於 Java 開發 Web 應用程式。MVC 架構很利於開發靈活、低耦合的 Web 應用程式組件。
M(Model)模型,應用程式的數據載體。通常是一些 POJO。
V(View)視圖,用於渲染一些模型的數據,一般是用來生成用戶瀏覽器的可以解釋的HTML。
C(Controller)控制器,用於處理用戶的請求並構建相應的模型,然後交給視圖渲染。
Spring MVC的優點:
(1)使用簡單;
(2)能夠很容易的開發出性能很好的程式;
(3)靈活,易於擴展;
(4)具有 Spring 的一些特性;
(5)支持 REST 風格;
Spring MVC的缺點:
(1)很難脫離容器進行獨立運行;
(2)需要編寫一些對應的 web.xml配置;
Spring MVC 請求流程
(Spring MVC 請求處理流程)
上圖流程涉及到的幾個組件的功能說明:
DispatcherServlet(前端控制器):接收用戶請求並返回請求結果。它控制著整個執行流程,對各個組件進行調度,降低組件之間的耦合,就像是一個團隊的組織人。
HandlerMapping(處理器映射器):根據用戶的請求 URL,根據 XML 配置或註解找到對應的處理器 Handler。
HandlerAdapter(處理器適配器):根據映射器找到的 Handler 完成調用處理器中的方法。
Handler(處理器):處理請求的主要邏輯,返回模型數據和視圖。
ViewResolver(視圖解析器):解析具體的視圖。通過 ModelAndView 中的 View 將邏輯視圖名解析為真正的 視圖。
請求具體步驟如下:
1:客戶端起請求,請求會被前端控制器(DispatcherServlet)攔截
2:前端控制器(DispatcherServlet)請求處理器映射器(HandlerMapping)查找Handler
3:處理器映射器(HandlerMapping)根據配置找到相應Handler,可能包含多個Interceptor攔截器,返回給前端控制器
4:前端控制器(DispatcherServlet)請求處理器適配器(HandlerAdapter)去執行相應的Handler
5:適配器交由對應Handler處理器執行
6: Handler處理器執行完成後返回ModelAndView對象給處理器適配器
7:處理器適配器接受Handler處理器的返回結果,並將該結果返回給前端控制器(DispatcherServlet)
8:前端控制器(DispatcherServlet)接收處理器適配器返回的數據和視圖信息,請求視圖解析器,解析對應的視圖
9:視圖解析器根據View信息匹配相應的視圖結果,反回給前端控制器
10:前端控制器接收具體視圖,進行視圖渲染,將Model數據填充到View視圖中,生成最終視圖
11:前端控制器向客戶端返回請求結果