javascript
初探Spring MVC 请求处理流程
Spring MVC 相對于前面的章節算是比較簡單的,我們首先引用《Spring in Action》上的一張圖來了解Spring MVC 的核心組件和大致處理流程:
從上圖中看到
①、DispatcherServlet 是SpringMVC 中的前端控制器(Front Controller),負責接收Request 并將Request 轉發給對應的處理組件。
② 、HanlerMapping 是SpringMVC 中完成url 到Controller 映射的組件。DispatcherServlet 接收Request, 然后從HandlerMapping 查找處理Request 的Controller。
③、Controller 處理Request,并返回ModelAndView 對象,Controller 是SpringMVC中負責處理Request 的組件(類似于Struts2 中的Action),ModelAndView 是封裝結果視圖的組件。
④、⑤、⑥視圖解析器解析ModelAndView 對象并返回對應的視圖給客戶端。
在前面的章節中我們已經大致了解到,容器初始化時會建立所有url 和Controller 中的Method 的對應關系,保存到HandlerMapping 中,用戶請求是根據Request 請求的url 快速定位到Controller 中的某個方法。在Spring 中先將url 和Controller 的對應關系,保存到Map<url,Controller>中。Web 容器啟動時會通知Spring 初始化容器(加載Bean 的定義信息和初始化所有單例Bean),然后SpringMVC 會遍歷容器中的Bean,獲取每一個Controller 中的所有方法訪問的url,然后將url 和Controller 保存到一個Map中;這樣就可以根據Request 快速定位到Controller,因為最終處理Request 的是Controller 中的方法,Map 中只保留了url 和Controller 中的對應關系,所以要根據Request 的url 進一步確認Controller 中的Method,這一步工作的原理就是拼接Controller 的url(Controller 上@RequestMapping 的值) 和方法的url(Method 上@RequestMapping 的值),與request 的url 進行匹配,找到匹配的那個方法;確定處理請求的Method 后,接下來的任務就是參數綁定,把Request 中參數綁定到方法的形式參數上,這一步是整個請求處理過程中最復雜的一個步驟。
?
總結
以上是生活随笔為你收集整理的初探Spring MVC 请求处理流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 触发通知
- 下一篇: HandlerMappings