SpringMVC工作流程 --通透較詳細

ixfcao發表於2022-03-22

SpringMVC工作流程

SpringMVC工作流程

流程說明(重要):

(1)客戶端傳送一個http請求給前端控制器(DispatcherServlet);

(2)前端控制器(DispacherServlet)根據請求資訊呼叫處理器對映器(HandlerMapping);

(3)處理器對映器(HandlerMapping)根據url找到具體的處理器(Handler),生成處理器物件以及對應的處理器攔截器(HandlerInterceptor有則生成)最後以HandlerExecutionChain物件的形式返回給前端控制器(DispacherServlet);

(4)前端控制器(DispacherServlet)根據返回資訊找到對應的處理器介面卡(HandlerAdapter);

(5)處理器介面卡(HandlerAdapter)會呼叫並執行(處理器)Handler,這裡的處理器指的是程式中編寫的Controller類,也稱後端控制器;

(6)處理器Handler(Controller)執行完後,返回ModelAndView物件(Model 是返回的資料物件,View 是個邏輯上的檢視)給前端控制器(DispacherServlet);

(7)前端控制器(DispacherServlet)根據返回資訊找到ViewReslover將邏輯檢視解析為具體的檢視(view),並進行渲染成完整的檢視(view)返回給客戶端。

SpringMVC 重要元件說明

1、前端控制器DispatcherServlet(不需要工程師開發),由框架提供(重要)

作用:Spring MVC 的入口函式。接收請求,響應結果,相當於轉發器,中央處理器。有了 DispatcherServlet 減少了其它元件之間的耦合度。使用者請求到達前端控制器,它就相當於mvc模式中的c,DispatcherServlet是整個流程控制的中心,由它呼叫其它元件處理使用者的請求,DispatcherServlet的存在降低了元件之間的耦合性。

2、處理器對映器HandlerMapping(不需要工程師開發),由框架提供

作用:根據請求的url查詢Handler。HandlerMapping負責根據使用者請求找到Handler即處理器(Controller),SpringMVC提供了不同的對映器實現不同的對映方式,例如:配置檔案方式,實現介面方式,註解方式等。

3、處理器介面卡HandlerAdapter

作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler 通過HandlerAdapter對處理器進行執行,這是介面卡模式的應用,通過擴充套件介面卡可以對更多型別的處理器進行執行。

4、處理器Handler(需要工程師開發)

注意:編寫Handler時按照HandlerAdapter的要求去做,這樣介面卡才可以去正確執行Handler Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的使用者請求進行處理。 由於Handler涉及到具體的使用者業務請求,所以一般情況需要工程師根據業務需求開發Handler。

5、檢視解析器View resolver(不需要工程師開發),由框架提供

作用:進行檢視解析,根據邏輯檢視名解析成真正的檢視(view) View Resolver負責將處理結果生成View檢視,View Resolver首先根據邏輯檢視名解析成物理檢視名即具體的頁面地址,再生成View檢視物件,最後對View進行渲染將處理結果通過頁面展示給使用者。 springmvc框架提供了很多的View檢視型別,包括:jstlView、freemarkerView、pdfView等。 一般情況下需要通過頁面標籤或頁面模版技術將模型資料通過頁面展示給使用者,需要由工程師根據業務需求開發具體的頁面。

6、檢視View(需要工程師開發)

View是一個介面,實現類支援不同的View型別(jsp、freemarker、pdf...)

注意:處理器Handler(也就是我們平常說的Controller控制器)以及檢視層view都是需要我們自己手動開發的。其他的一些元件比如:前端控制器DispatcherServlet、處理器對映器HandlerMapping、處理器介面卡HandlerAdapter等等都是框架提供給我們的,不需要自己手動開發。

參考文章及視訊:

SpringMVC工作流程 -- 詳解_布諾i的部落格-CSDN部落格_springmvc工作流程

springmvc的工作流程 - 知乎 (zhihu.com)

SpringMVC 詳細流程 + 入門程式(詳細步驟)_MTmantou的部落格-CSDN部落格

11.3spring mvc的工作流程_嗶哩嗶哩_bilibili

相關文章