淺析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 |