SpringMVC學習宏觀上把握SpringMVC框架

編程語言 程序員 Java JSP 穩穩地幸福y 穩穩地幸福y 2017-09-13

pringmvc是一個基於mvc的web框架,是spring框架的一個模塊,所以springmvc和spring無需通過中間整合層進行整合。我們先來看下spring的一個架構模型,看springmvc在spring框架中所處的位置:

SpringMVC學習宏觀上把握SpringMVC框架

從圖中可以看出,springmvc是spring的一個web框架,所以上圖中描述的是spring web mvc,它和struts2的功能差不多,下面我們來深入到springmvc內部,看它的幹了些啥,先看一個圖:

SpringMVC學習宏觀上把握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返回給客戶端。

如果你也想在IT行業拿高薪,可以參加我們的訓練營課程,選擇最適合自己的課程學習,技術大牛親授,7個月後,進入名企拿高薪。我們的課程內容有:Java工程化、高性能及分佈式、高性能、深入淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點。如果你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優勢的,想進阿里面試但擔心面試不過的,你都可以來,群號為:71859422

注:加群要求

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

6.小號或者小白之類加群一律不給過,謝謝。

目標已經有了,下面就看行動了!記住:學習永遠是自己的事情,你不學時間也不會多,你學了有時候卻能夠使用自己學到的知識換得更多自由自在的美好時光!時間是生命的基本組成部分,也是萬物存在的根本尺度,我們的時間在那裡我們的生活就在那裡!我們價值也將在那裡提升或消弭!Java程序員,加油吧!

上面描述了一下springmvc的執行流程,如果還是有點模糊的話,我用下面這個流程圖來表示一下,也為了自己更好的理解整個執行流程:

SpringMVC學習宏觀上把握SpringMVC框架

經過這麼一分析,現在對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的世界了。

相關推薦

推薦中...