Spring MVC 是一個模型 - 視圖 - 控制器(MVC)的Web框架創建在中央前端控制器servlet(DispatcherServlet),它負責發送每一個請求到合適的處理程序,使用視圖來最終返回響應結果的概念。Spring MVC 是 Spring 產品組合的一部分,它享有 Spring IoC容器緊密結合Spring鬆耦合等特色,所以它有Spring的全部優勢。前端
SpringMVC架構圖所下所示 web
Spring Web MVC框架特色瀏覽器
清晰的角色劃分:控制器(controller)、驗證器(validator)、 命令對象(command object)、表單對象(form object)、模型對象(model object)、 Servlet分發器(DispatcherServlet)、 處理器映射(handler mapping)、視圖解析器(view resolver)等等。 每個角色均可以由一個專門的對象來實現。
強大而直接的配置方式:將框架類和應用程序類都能做爲JavaBean配置,支持跨多個context的引用,例如,在web控制器中對業務對象和驗證器(validator)的引用。
可適配、非侵入:能夠根據不一樣的應用場景,選擇合適的控制器子類 (simple型、command型、form型、wizard型、multi-action型或者自定義),而不是從單一控制器 (好比Action/ActionForm)繼承。
可重用的業務代碼:可使用現有的業務對象做爲命令或表單對象,而不須要去擴展某個特定框架的基類。
可定製的綁定(binding) 和驗證(validation):好比將類型不匹配做爲應用級的驗證錯誤, 這能夠保存錯誤的值。再好比本地化的日期和數字綁定等等。
可定製的handler mapping和view resolution:Spring提供從最簡單的URL映射, 到複雜的、專用的定製策略。
靈活的model轉換:在Springweb框架中,使用基於Map的 鍵/值對來達到輕易地與各類視圖技術的集成。
可定製的本地化和主題(theme)解析:支持在JSP中可選擇地使用Spring標籤庫、支持JSTL、支持Velocity(不須要額外的中間層)等等。
簡單而強大的JSP標籤庫(Spring Tag Library):支持包括諸如數據綁定和主題(theme) 之類的許多功能。它提供在標記方面的最大靈活性。
JSP表單標籤庫:在Spring2.0中引入的表單標籤庫,使得在JSP中編寫 表單更加容易。
Spring Bean的生命週期能夠被限制在當前的HTTP Request或者HTTP Session。 準確的說,這並不是Spring MVC框架自己特性,而應歸屬於Sping MVC使用的WebApplicationContext容器。架構
Spring MVC大體的執行流程以下:app
一、首先瀏覽器發送請求給前端控制器DispatcherServlet,DispatcherSerlvet根據請求信息,基於必定的原則選擇合適的控制器進行處理並把 請求委託給它。框架
二、頁面控制器接收到請求以後進行功能處理,首先須要收集、綁定請求參數到一個對象(命令對象),並進行驗證,而後將該對象委託給業務對象進行處理(service層);業務對象處理以後控制器將返回一個ModelAndView(模型數據和邏輯視圖名);spa
三、DispatcherServlet根據返回的邏輯視圖名,選擇合適的視圖進行渲染(界面展現、資源加載),並把模型數據傳入以便視圖渲染。orm
四、前端控制器將響應返回個客戶端瀏覽器。對象