spring mvc學習 整體概覽

 

spring mvc 設計概覽

 
springmvc處理http請求,主要是在web.xml中配置一個dispatcherservlet,而後由此進行攔截並處理請求返回相應,下面就針對源碼大致記錄下dispatcherservlet的初始化和請求的處理流程。
 

具體的核心開發步驟:

一、 DispatcherServlet在web.xml 中的部署描述,從而攔截請求到Spring Web MVC
二、 HandlerMapping的配置,從而將請求映射處處理器,這裏能夠經過實現HandlerMapping接口來本身作映射關係,通常上也不用。
三、 HandlerAdapter 的配置,從而支持多種類型的處理器,這裏能夠經過實現HandlerAdapter接口來本身作適配,複寫handle方法,指定回調對應的handler的指定方法,固然,已經有註解的方式了,通常也不用本身擴展了。
四、 ViewResolver 的配置,從而將邏輯視圖名解析爲具體視圖技術
五、處理器(頁面控制器)的配置,從而進行功能處理
 

dispatcherservlet啓動和初始化

他是個servlet,那麼找到他的基類HttpServletBean的init方法,
首先會吧在web.xml中配置的一些初始化參數加載設置一下,
而後回去初始化dispatcherservlet持有的ioc容器,他會先去ServletContext中獲取一個父ioc容器(webxml中配置了ContextLoaderListener的話,他在初始化的時候往servletcontext中放了一個,這個通常上都讓他去加載項目用的bean,而dispatcherservlet持有的那個裏面放的一版上都是和mvc相關的一些bean),這樣在ioc容器getbean的時候,會先去容器的父容器中查找,若是找到了那麼就找到,若是沒找到,纔去自容器中查找。

 

 

 
接着就是mvc框架相關的一些初始化,代碼在dispatcherservlet的initStrategies方法中

 

初始化結束後,就會將配置好的handlermapping handleradpter 等都放在了dispatcherservlet中了,處理http請求使用的時候,就直接拿過來用了。
 
這裏在初始化的時候,其實有個默認的配置,好比handlermapping
 
這個地方指向的就是一個資源文件,文件就放在spring-webmvc-xxx.jar裏面,以下,裏面已經默認配置了一些經常使用的,因此不用配置也可使用。

 

 
 

mvc處理http分發請求

 

核心架構的具體流程步驟以下:
跟源碼http請求最終進入到了dispatcherservlet的doDispatch方法中。

 

一、 首先用戶發送請求——>DispatcherServlet,前端控制器收到請求後本身不進行處理,而是委託給其餘的解析器進行
處理,做爲統一訪問點,進行全局的流程控制;

 

二、 DispatcherServlet——>HandlerMapping, HandlerMapping 將會把請求映射爲HandlerExecutionChain 對象(包含一
 
個Handler 處理器(頁面控制器)對象、多個HandlerInterceptor 攔截器)對象,經過這種策略模式,很容易添加新
的映射策略;

 

 
三、 DispatcherServlet——>HandlerAdapter,HandlerAdapter 將會把處理器包裝爲適配器,從而支持多種類型的處理器,
即適配器設計模式的應用,從而很容易支持不少類型的處理器;

 

四、 HandlerAdapter——>處理器功能處理方法的調用,HandlerAdapter 將會根據適配的結果調用真正的處理器的功能處
理方法,完成功能處理;並返回一個ModelAndView 對象(包含模型數據、邏輯視圖名);
 
 

 

五、 ModelAndView的邏輯視圖名——> ViewResolver, ViewResolver 將把邏輯視圖名解析爲具體的View,經過這種策
略模式,很容易更換其餘視圖技術;

 

六、 View——>渲染,View會根據傳進來的Model模型數據進行渲染,此處的Model實際是一個Map數據結構,所以
很容易支持其餘視圖技術;
 
相關文章
相關標籤/搜索