1. 程式人生 > >(一)Spring MVC簡介

(一)Spring MVC簡介

spa 渲染 pin 行處理 根據 jstl 處理器 類的屬性 簡單

一、概述

Spring web mvc和Struts2都屬於表現層的框架,它是Spring框架的一部分。Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,

即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring MVC大大簡化了我們日常Web開發。

二、Struts2和SpringMVC對比

1、springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過濾器。 

2、springmvc是基於方法開發(一個url對應一個方法),請求參數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基於類開發,傳遞參數是通過類的屬性,只能設計為多例。 

3、Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據, springmvc通過參數解析器是將request請求內容解析,並給方法形參賦值,將數據和視圖封裝成ModelAndView對象,最後又將ModelAndView中的模型數據通過request域傳輸到頁面。Jsp視圖解析器默認使用jstl。

三、優點  

√讓我們能非常簡單的設計出幹凈的Web層和薄薄的Web層; 

√進行更簡潔的Web層的開發; 

√天生與Spring框架集成(如IoC容器、AOP等); 

√提供強大的約定大於配置的契約式編程支持; 

√能簡單的進行Web層的單元測試; 

√支持靈活的URL到頁面控制器的映射; 

√非常容易與其他視圖技術集成,如Velocity、FreeMarker等等,因為模型數據不放在特定的API裏,而是放在一個Model裏(Map數據結構實現,因此很容易被其他框架使用); 

√非常靈活的數據驗證、格式化和數據綁定機制,能使用任何對象進行數據綁定,不必實現特定框架的API; 

√提供一套強大的JSP標簽庫,簡化JSP開發; 

√支持靈活的本地化、主題等解析; 

√更加簡單的異常處理; 

√對靜態資源的支持; 

√支持Restful風格。

四、Spring MVC架構

技術分享圖片

1、  用戶發送請求至前端控制器DispatcherServlet,前端控制器收到請求後自己不進行處理,而是調用處理器映射器。

2、  DispatcherServlet收到請求後調用HandlerMapping處理器映射器。HandlerMapping將會把請求映射為HandlerExecutionChain對象(包含一個Handler處理器(頁面控制器)對象、多個HandlerInterceptor攔截器)對象。 

3、  處理器映射器根據請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一並返回給DispatcherServlet。 

4、  DispatcherServlet通過HandlerAdapter處理器適配器調用處理器 

5、  執行處理器(Controller,也叫後端控制器)。返回執行結果,封裝在ModelAndView中 

6、  DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器, ViewResolver將把邏輯視圖名解析為具體的View,通過這種策略模式,很容易更換其他視圖技術;   

7、  ViewReslover解析後返回具體View 

8、  DispatcherServlet對View進行渲染視圖(即將對象模型的數據填充至視圖中)。此處的Model實際是一個Map數據結構,因此很容易支持其他視圖技術; 

9、  DispatcherServlet將結果響應給用戶 

  

(一)Spring MVC簡介