SpringMvc原理分析

springmvc的工作原理圖:
在這裏插入圖片描述
SpringMVC流程
1、 用戶發送請求至前端控制器DispatcherServlet(其實在前端控制器收到請求時會創建springmvc容器,如果存在spring容器,則將spring容器向下轉型得到springmvc容器,如果不存在則創建springmvc的ioc容器,所以spring和springmvc是父子容器的關係)。

2、 DispatcherServlet收到請求調用HandlerMapping處理器映射器。

3、 處理器映射器找到具體的處理器(可以根據xml配置、註解進行查找),生成處理器對象及處理器攔截器(如果有則生成)一併返回給DispatcherServlet。HandlerMapping其實只有一個HandlerExecutionChain getHandler(HttpServletRequest request);方法。作用是根據當前請求的找到對應的 Handler(HandlerMethod(Controller 中的方法)、 Controller 對象),並將 Handler 與一堆 HandlerInterceptor (攔截器)封裝到
HandlerExecutionChain 對象中。

4、 DispatcherServlet調用HandlerAdapter處理器適配器(利用 RequestMappingHandlerMapping 獲取的 Handler 是 HadnlerMethod 類型,它代表 Controller 裏要執行的方法,將handler傳遞給HandlerAdapter。)。

5、 HandlerAdapter經過適配調用具體的處理器(Controller,也叫後端控制器),HandlerAdapter其實是將當前的Handler進行匹配,判斷是哪一種類型(基於註解實現d的requestMappingHandlerAdapter,基於配置文件實現的simpleControllerHandlerAdapter(其本質也是執行 Controller 中的 handleRequest 方法),HttpRequestHandlerAdapter(其實就是 Controller 中的 handleRequest 方法),還有用於適配Servlet的SimpleServletHandlerAdapter (其最終執行的方法是 Servlet 的 service 方法))。

6、 Controller執行完成返回ModelAndView。

7、 HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet。

8、 DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器(將邏輯試圖轉換成物理視圖的過程)。

9、 ViewReslover解析後返回具體View。

10、DispatcherServlet根據View進行渲染視圖(即將模型數據填充至視圖中,模型數據是保存在request對象中的)。

11、 DispatcherServlet響應用戶。

其實這裏的Handler可以說就是我們編寫的controller。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章