【基本流程】
- 客戶端傳送請求,到DispatcherServlet(SpringMVC前端控制器,主要負責分發)
- DispatcherServlet根據請求的url資訊呼叫HandlerMapping,解析請求對應的Handler
- 解析到對應的Handler(controller的實現類,也叫action)之後,傳送給處理器介面卡進行適配(處理器有兩種實現方式:實現介面、基於註解,所以執行之前需要先適配)
- HandlerAdapter根據Handler來呼叫真正的處理器,處理請求並進行業務處理,然後返回ModelAndView(Model 是返回的資料物件,View 是個邏輯上的 View)
- DispatcherServlet接收到ModelAndView之後,向ViewResolver請求真正的view(jsp頁面等)
- DispatcherServlet將model傳送給view進行檢視渲染
- 返回響應
【元件說明】
------前端控制器DispatcherServlet <框架提供>
Spring MVC 的入口函式。
接收請求,響應結果,相當於轉發器,中央處理器。
使用者請求到達前端控制器,它就相當於mvc模式中的c,DispatcherServlet是整個流程控制的中心,由它呼叫其它元件處理使用者的請求。
DispatcherServlet的存在降低了元件之間的耦合性。
------處理器對映器HandlerMapping <框架提供>
根據請求的url查詢Handler。
HandlerMapping負責根據使用者請求找到Handler即處理器(Controller),SpringMVC提供了不同的對映器實現不同的對映方式,例如:配置檔案方式,實現介面方式,註解方式等。
------處理器介面卡HandlerAdapter <框架提供>
按照特定規則(HandlerAdapter要求的規則)去執行Handler ,通過擴充套件介面卡可以對更多型別的處理器進行執行。
------處理器Handler <工程師提供>
編寫Handler時按照HandlerAdapter的要求去做,這樣介面卡才可以去正確執行Handler。
Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的使用者請求進行處理。
------檢視解析器View resolver <框架提供>
進行檢視解析,根據邏輯檢視名解析成真正的檢視(view)。
View Resolver負責將處理結果生成View檢視,View Resolver首先根據邏輯檢視名解析成物理檢視名(即具體的頁面地址),再生成View檢視物件,最後對View進行渲染將處理結果通過頁面展示給使用者。
springmvc框架提供了很多的View檢視型別,包括:jstlView、freemarkerView、pdfView等。
一般情況下需要通過頁面標籤或頁面模版技術將模型資料通過頁面展示給使用者,需要由工程師根據業務需求開發具體的頁面。
------檢視View <工程師提供>
View是一個介面,實現類支援不同的View型別(jsp、freemarker、pdf...)