1. 程式人生 > >Spring MVC @RequestMapping @ResponseBody @RequestBody @PathVariable @RestController ...總結

Spring MVC @RequestMapping @ResponseBody @RequestBody @PathVariable @RestController ...總結

Spring MVC框架是目前使用最廣泛的Web框架,在該框架種涉及到一些常用的重要註解,現總結如下:

@RequestMapping

    作用:請求對映,也就是將請求的URI對映到特定的Hander類或者方法上。官方解釋如下:

在該註解下還支援一些相關的註解和引數,當然你可以根據你的需求進行配置。

1.path配置@RequestMapping(“/ foo”)等價於@RequestMapping(path =“/ foo”);

2.方法配置指定該請求支援的HTTP方法,GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE。,配置方式

 @RequestMapping(“/ foo”,method = RequestMethod.GET),RequestMethod是一個列舉類,

為了簡化方法的配置,Spring MVC框架推出了以上方法的複合註解,例如@ GetMapping,@ PostMapping,例如GetMapping的註解實現

3.引數配置和報頭配置,就是通過指定引數和標題來縮小對映,其實一般不常用

4.consumers設定,該設定就是指定HTTP請求中的Content-Type。可以指定一個或者多個以及非允許的格式

此處就是限制POST之類的請求體中的資料格式。

5.produces設定,該設定就是指定HTTP請求中的接受頭的設定。

那麼Content-Type與Accept的區別是什麼?兩者都是描述媒體型別的,表示為MIME型別。在響應體中,Content-Type標題告訴客戶實際返回的內容的內容型別。接受請求的HTTP標頭通告了內容型別,並表示為MIME型別,客戶端是能夠理解的。使用內容協商,伺服器然後選擇其中一個提議,使用它並通過Content-Type響應頭通知客戶它的選擇。

@ResponseBody

         該註釋表明一個方法的返回值應該被繫結到web響應的body體內。現在web開發普遍是前後端分離以及ajax請求技術的使用,使用Web MVC的場景較少,所以為了避免在每一個方法上新增該註解的繁瑣,春天提供了RestController註解,該註解是與@ResponseBody @Controller的複合註解。

@RequestBody

該註解表明一個方法的引數應該被繫結到網頁請求的身體體上,這個請求體會被HttpMessageConverter解析為指定的型別。

唯一可配置的引數是必需的,用來指示該引數為必須還是非必須。例如

@PostMapping( “/新增/使用者”)

public void add(@RequestBody User user){

}

@PathVariable

該註解表明一個方法的引數被繫結到一個URI模板變數。例如

@GetMapping( “/選擇/ {使用者id}”)

public void select(@PathVariable Integer userId){

}

@RequestParam

該註解讓我們可以方便的從一個請求中獲取引數,但是前提條件是請求的引數型別是地圖,那麼實際應用中只有獲得請求以及非GET請求時身體中資料提交方式是形式的資料或者X-WWW - 形式進行了urlencoded才可以使用該方式獲取引數,否則會報

org.springframework.web.bind.MissingServletRequestParameterException:必需的字串引數'**'不存在

@GetMapping( “/選擇/”)

public void select(@RequestParam Integer userId){

}

除了以上註解為還有一些註解例如@RequestPart @ *** Attribute / s等等,不是很常用。