在上篇文章中對Spring 核心容器等作了一個簡單的介紹,但願能夠幫助你對Spring 有一個簡單的理解,這篇文章主要圍繞Spring MVC 展開,在最短的時間內幫助你對Spring MVC有個簡單的印象,在結尾附有學習資料。html
MVC(Model,View,Controller)是一種設計思想,能夠幫助咱們更好的組織軟件的結構。
這個模式認爲,程序不論簡單或複雜,從結構上看,均可以分紅三層。git
最上面的一層,是直接面向最終用戶的"視圖層"(View)。它是提供給用戶的操做界面,是程序的外殼。github
最底下的一層,是核心的"數據層"(Model),也就是程序須要操做的數據或信息。spring
中間的一層,就是"控制層"(Controller),它負責根據用戶從"視圖層"輸入的指令,選取"數據層"中的數據,而後對其進行相應的操做,產生最終結果。json
這三層是緊密聯繫在一塊兒的,但又是互相獨立的,每一層內部的變化不影響其餘層。每一層都對外提供接口(Interface),供上面一層調用。這樣一來,軟件就能夠實現模塊化,修改外觀或者變動數據都不用修改其餘層,大大方便了維護和升級。
引之 阮一峯的《談談MVC模式》api
瞭解更多(閱讀其餘):
MVC - 維基百科
如何理解Web應用程序的MVC模型? - 知乎
MVC,MVP 和 MVVM 的圖示 - 阮一峯瀏覽器
提升咱們的開發效率spring-mvc
Spring MVC做爲Spring 自家的項目能夠與Spring無縫結合安全
相比於Struts2更加安全mvc
註解式聲明,作到所見即所得
瞭解更多(閱讀其餘):
Spring mvc和SSH如何取捨?
以一個簡單的UserController 爲例演示對用戶的CRUD操做:
@RestController @RequestMapping("api/user") public class UserController { @RequestMapping(method = RequestMethod.POST) public HttpResponse<String> save(User user) { return HttpResponse.OK; } @RequestMapping(value = "/{userId}", method = RequestMethod.DELETE) public HttpResponse<String> delete(@PathVariable Long userId) { return HttpResponse.OK; } @RequestMapping(value = "/userId", method = RequestMethod.PUT) public HttpResponse<String> update(@PathVariable("userId") User user, @RequestBody User news) { return HttpResponse.OK; } @RequestMapping(value = "/userId", method = RequestMethod.GET) public HttpResponse<User> get(@PathVariable("userId") User user) { return new HttpResponse<>(user); } }
註解說明:
@RestController :它繼承自@Controller註解。4.0以前的版本,Spring MVC的組件都使用@Controller來標識當前類是一個控制器servlet,相比於 @Controller 通常經常使用於開發REST服務,用於返回json數據。
@RequestMapping :@RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。
RequestMapping註解有六個屬性,下面咱們把她分紅三類進行說明。 一、 value, method; value: 指定請求的實際地址,指定的地址能夠是URI Template 模式(後面將會說明); method: 指定請求的method類型, GET、POST、PUT、DELETE等; 二、 consumes,produces; consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html; produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回; 三、 params,headers; params: 指定request中必須包含某些參數值是,才讓該方法處理。 headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
@PathVariable :將路徑值綁定在對象上 ,即 someUrl/{paramId}, 這時的paramId可經過 @Pathvariable註解綁定它傳過來的值到方法的參數上。
@RequestBody 接收 瀏覽器傳來的json對象轉化爲實體對象
官方資料:
Web MVC framework 4.2.4.RELEASE
Github上的翻譯:
Spring MVC官方4.2.4.RELEASE版本的文檔
國內博客:
史上最全最強SpringMVC詳細示例實戰教程
跟開濤學SpringMVC筆記
視頻資料:
尚硅谷佟剛SpringMVC 4.X視頻教程
學習任何東西都是循循漸進的,這篇文章只是對Spring MVC 一些經常使用註解的使用,建議仍是多看一些官方資料,或關注大牛的博客,從而幫助對它有更深的理解。
@RequestParam @RequestBody @PathVariable 等參數綁定註解詳解
@RequestMapping 用法詳解之地址映射
Spring4.0系列3-@RestController