面試官:來給我說一下Spring MVC的執行過程?

技術 Java 數據庫 編譯器 Java識堂 2019-05-22


面試官:來給我說一下Spring MVC的執行過程?

Java識堂,一個高原創,高收藏,有乾貨的微信公眾號,一起成長,一起進步,歡迎關注

通過深入分析Spring源碼,我們知道Spring框架包括大致六大模塊, 如Web模塊,數據庫訪問技術模塊,面向切面模塊,基礎設施模塊,核心容器模塊和模塊。


其中,在Spring框架的Web模塊中,又包含很多前端技術,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我們主要分析SpringMVC模塊。


在分析SpringMVC技術時,本篇文章將通過解讀SpringMVC源碼,並通過編譯器斷點調試追蹤,研究Spring核心類的UML圖,來深入剖析SpringMVC的執行過程。


一、 Spring核心模塊


下圖為Spring核心模塊,其中SpringMVC模塊位於Spring框架的Web模塊部分。


面試官:來給我說一下Spring MVC的執行過程?


二、SpringMVC執行原理


下圖為SpringMVC的一個較完整的流程圖,實線表示SpringMVC框架提供的技術,不需要開發者實現,虛線表示需要開發者實現。

簡要分析執行流程。


1、DispatcherServlet表示前置控制器,是整個SpringMVC的控制中心。用戶發出請求,DispatcherServlet接收請求並攔截請求。


我們假設請求的url為:

http://localhost:9999/SpringMVC/input-product


如上url拆分成三部分:

  • http://localhost:9999 服務器域名
  • SpringMVC部署在服務器(http://localhost:9999)上的web站點
  • input-product表示控制器


通過分析,如上url表示為:請求位於服務器localhost:9999上的SpringMVC站點的input-product控制器。


2、HandlerMapping為處理器映射。DispatcherServlet調用HandlerMapping,HandlerMapping根據請求url查找Handler。


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.最終視圖呈現給用戶。


面試官:來給我說一下Spring MVC的執行過程?


三、SpringMVC核心組件


1、DispatcherServlet


DispatcherServlet就是所謂的SpringMVC前端控制器,作為整個SpringMVC的控制中心,,其相關UML如下所示:

面試官:來給我說一下Spring MVC的執行過程?

2、HandlerMapping


HandlerMapping主要用來解析請求url,解析出控制器,從而映射控制器,其相關類有16個。

面試官:來給我說一下Spring MVC的執行過程?

如下為HandlerMapping的UML圖

面試官:來給我說一下Spring MVC的執行過程?


3、HandlerAdapter


HandlerAdapter主要是調度Controller來處理業務邏輯等,想相關類有6個。

面試官:來給我說一下Spring MVC的執行過程?

如下為HandlerAdapter的UML:

面試官:來給我說一下Spring MVC的執行過程?


4、ViewResolver


ViewResolver接口主要作用是解析DispatcherServlet傳遞的邏輯視圖名,並將解析結果傳回給DispatcherServlet。實現該接口的相關類或接口共有19個。

面試官:來給我說一下Spring MVC的執行過程?

如下為ViewResolver主要的UML。

面試官:來給我說一下Spring MVC的執行過程?

作者:Alan_beijing 來源:http://t.cn/Ex4kTyP

相關推薦

推薦中...