Spring mvc 的生命週期

http://blog.csdn.net/biaohu_lanh/article/details/16818931


今天是第一次接觸spring mvc 首先 我們先從Spring mvc的生命週期來了解它。

 

首先,瀏覽器會發送請求,我們的項目通過spring中的一個叫做dispatcherServlet名字的一個servlet來接收請求.

這個Servlet接收請求後 會驗證是否是第一次加載這個Servlet。如果是第一次加載這個Servlet 則此時dispatcherServlet會做一些初始化操作。

           1.dispatcherServlet會初始化HandlerMapping(注:通過它來處理客戶端請求到各個Controller處理器的映射)

           2. dispatcherServlet會初始化HandlerAdapter(注:HandlerMapping會根據它來調用Controller裏需要被執行的方法)

           3. dispatcherServlet會初始化handlerExceptionResolver(注:spring mvc處理流程中,如果有異常拋出,會交給它來進行異常處理)

           4. dispatcherServlet會初始化ViewResolver (注:HandlerAdapter會把Controller中調用返回值最終包裝成ModelAndView,ViewResolver會檢查其中的view,如果view是一個字符串,它就負責處理這個字符串並返回一個真正的View,如果view是一個真正的View則不會交給它處理)

上述這些都初始化完畢後  然後dispathcerServlet會開始查詢一個或者多個handlerMaprring 來將請求映射到一個控制器對象

         如果此時沒有找到一個控制器對象 則會拋出異常

         如果找到了一個控制器對象 那麼這個請求會經過一個攔截器鏈的preHandle處理 通過handlerAdapter來匹配到控制器對象的具體方法

然後這個方法中會根據我們的業務邏輯來處理請求 完成業務邏輯的處理後 控制器會得到一個ModelAndView對象(注:這個類中的view這個屬性是 Object 類型的,它可以是一個視圖名也可以是一個實際的View)

得到這個ModelAndView後   spring會判斷ModelAndView的viewName是否是String類型 

         如果是String類型    則直接調用ModelAndView的getView方法   然後找到對應的頁面 然後將信息返回給DispatcherServlet

         如果不是string類型 然後會根據viewName到ViewResolver中去找到這個名稱  然後確定其對應的頁面  然後將頁面返回給dispatcherserlvet

最後dispatcherSerlvet會將得到頁面返回給瀏覽器。

 

最後 附上我一張自己畫的圖 來作爲上邊文字的一個解釋


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