標籤:

淺析Spring MVC的工作原理及其與Spring的關係

Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的SpringMVC框架或集成其他MVC開發框架,如Struts1,Struts2等。

Spring MVC的整個工作過程是從一個HTTP請求開始:

1)DispatcherServlet接收到請求後,根據對應配置文件中配置的處理器映射,找到對應的處理器映射項(HandlerMapping),根據配置的映射規則,找到對應的處理器(Handler)。

2)調用相應處理器中的處理方法,處理該請求,處理器處理結束後會將一個ModelAndView類型的數據傳給DispatcherServlet,這其中包含了處理結果的視圖和視圖中要使用的數據。

3)DispatcherServlet根據得到的ModelAndView中的視圖對象,找到一個合適的ViewResolver(視圖解析器),根據視圖解析器的配置,DispatcherServlet將視圖要顯示的數據傳給對應的視圖,最後給瀏覽器構造一個HTTP響應。 DispatcherServlet是整個Spring MVC的核心。

DispatcherServlet負責接收HTTP請求組織協調Spring MVC的各個組成部分。其主要工作有以下三項:

1)截獲符合特定格式的URL請求。

2)初始化DispatcherServlet上下文對應的WebApplicationContext,並將其與業務層、持久化層的WebApplicationContext建立關聯。

3)初始化Spring MVC的各個組成組件,並裝配到DispatcherServlet中。

然後簡單說一下Spring MVC與Spring的關係。Spring可以說是一個管理bean的容器,也可以說是包括很多開源項目的總稱,而Spring MVC是其中一個開源項目。如果簡單進行一個流程,當http請求一到,由容器(如:Tomcat)解析http形成一個request,通過映射關係(比如路徑,方法,參數)被Spring MVC一個分發器去找到可以處理這個請求的bean,在Tomcat裡面就由Spring管理bean的一個池子(bean容器)裡面找到。處理完了就把響應返回。

基於Spring實現的MVC框架是不能不使用Spring的。單獨使用Spring MVC,因為其需要依賴IOC容器。但是如果單獨為了更好的理解SpringMVC這種MVC框架,就把它和Struts/Struts2等一系列的MVC框架對比理解,理解其只是基於DispatcherServlet或者Filter做一個前端分發器,最終把這個框架引導起來,進行其自己的邏輯處理。

推薦閱讀:

spring整合mybatis是如何配置事務的?
Github上有沒有關於springmvc框架的項目?
【spring指南系列】使用Redis進行消息傳遞

TAG:Spring |