1.宏觀上如何來把握SpringMVC框架?

昨天給大家分享了Spring中常見的IOC和AOP問題。今天老師給大家總結下如何在宏觀上把握SpringMVC框架。

springmvc是一個基於mvc的web框架,是spring框架的一個模塊,所以springmvc和spring無需通過中間整合層進行整合。我們先來看下spring的一個架構模型,看springmvc在spring框架中所處的位置:
在這裏插入圖片描述
從圖中可以看出,springmvc是spring的一個web框架,所以上圖中描述的是spring web mvc,它和struts2的功能差不多,下面我們來深入到springmvc內部,看它的幹了些啥,先看一個圖:
在這裏插入圖片描述
這個圖描述了springmvc的整個執行的流程,乍一看有點暈乎,待我一步步分析,最後弄個流程圖出來就明白了。結合上圖,我描述一下springmvc的執行流程:

1. 向服務器發送Http request請求,請求被前端控制器(DispatcherServlet)捕獲。
2. 前端控制器根據xml文件中的配置(或者註解)對請求的URL進行解析,得到請求資源標識符(URI)。然後根據該URI,調用處理器映射器(HandlerMapping)獲得處理該請求的Handler以及Handler對應的攔截器,最後以 HandlerExecutionChain 對象的形式返回。
3. 前端控制器根據獲得的Handler,選擇一個合適的處理器適配器(HandlerAdapter)去執行該Handler。
4. 處理器適配器提取request中的模型數據,填充Handler入參,執行處理器(Handler)(也稱之爲Controller).
5. Handler(Controller)執行完成後,向處理器適配器返回一個ModelAndView對象,處理器適配器再向前端控制器返回該ModelAndView對象(ModelAndView只是一個邏輯視圖)。
6. 根據返回的ModelAndView,前端控制器請求一個適合的視圖解析器(ViewResolver)(必須是已經註冊到Spring容器中的ViewResolver)去進行視圖解析,然後視圖解析器向前端控制器返回一個真正的視圖View(jsp)。
7. 前端控制器通過Model解析出ModelAndView中的參數進行解析,最終展現出完整的View並通過Http response返回給客戶端。

上面描述了一下SpringMVC的執行流程,如果還是有點模糊的話,下面結合我們的編程,來分析一下SpringMVC的幾個組件:

1. 前端控制器DispatcherServlet(不需要程序員開發)。 
作用:接收請求,響應結果,相當於轉發器,中央處理器。有了DispatcherServlet減少了其它組件之間的耦合度。
2. 處理器映射器HandlerMapping(不需要程序員開發)。 
作用:根據請求的url查找Handler。
3. 處理器適配器HandlerAdapter(不需要程序員開發)。 
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler。
4. 處理器Handler(需要程序員開發)。 
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器纔可以去正確執行Handler
5. 視圖解析器ViewResolver(不需要程序員開發)。 
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
6. 視圖View(需要程序員開發jsp)。 
View是一個接口,實現類支持不同的View類型(jsp、freemarker、pdf…) 
【注】:不需要程序員開發的,需要程序員自己做一下配置即可。

現在看來,其實真正需要程序員開發的就兩大塊:一個是Handler,一個是jsp,這樣的話,其實和struts2就差不多了,所以不要被上面那個一系列的流程給繞傻了。

整個SpringMVC的架構就總結到這吧,後面就要開始走進SpringMVC的世界了,你準備好了嗎?

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