一、Spring MVC概述
Spring MVC(指Spring Web MVC)是Spring提供給Web應用的框架設計,MVC框架一般來說由三部分組成:
- Model:模型層,一般由java bean完成,主要是進行數據庫操作;
- View:視圖層,用於前端展示,比如jsp、html等;
- Controller:控制層,鏈接前后端,處理用戶請求,起着承前啟后的作用;
早期的MVC模型:
圖一 Model1
圖二 Model2——早起的MVC模型
早期的MVC模型多了一個Servlet組件,首先用戶的請求到達Servlet,Servlet組件主要作為控制器,這樣Servlet就接收了這個請求,可以通過它來調度Java Bean,來讀寫數據庫的數據,然后將結果放到JSP中,這樣就可以獲得數據並展現給用戶。
圖三 Spring MVC 架構
圖三展示了傳統的模型層被差分為業務層(Service)和數據訪問層(Dao)。對於Spring MVC而言其最大的特色就是結構松散,比如滿足手機端、頁面端和平板電腦等各類請求,幾乎可以在Spring MVC 中使用各類視圖,包括JSON、JSP、XML、PDF等。
二、Spring MVC 組件與流程
Spring MVC的核心在於其流程,這是使用Spring MVC 框架的基礎,Srping MVC 是一種基於Servlet的技術,它提供的核心控制組件DispatcherServlet 和相關的組件,並制定了松散的結構,已適應各種靈活的需要。下面看一下Spring MVC 的組件和流程圖:
圖四 Spring MVC的組件和流程
從上圖中可以看出Spring MVC框架是圍繞着DispatcherServlet而工作的,這個類是一個Servlet,在Servlet初始化(調用init方法):
1、首先Spring MVC 會根據配置,獲取配置信息,獲取URI和處理器Handler之間的映射關系(HandlerMapping),由於處理器上還加入了攔截器,這樣開始執行處理器和攔截器組成的執行鏈,而運行處理器需要一個對應的環境,這樣它就有了一個處理器的適配器(HandlerAdapter),通過適配器就能運行對應的處理器及其攔截器。
2、在處理器返回模型和視圖給DispacherServlet后,DispatcherServlet就會把對應的視圖信息傳遞給視圖解析器(ViewResolver)。