1. 程式人生 > >@RequestParam @RequestBody @PathVariable 之@requestBody註解的使用

@RequestParam @RequestBody @PathVariable 之@requestBody註解的使用

第一部分:

handler method 引數繫結常用的註解,我們根據他們處理的Request的不同內容部分分為四類:(主要講解常用型別)

A、處理requet uri 部分(這裡指uri template中variable,不含queryString部分)的註解:   @PathVariable;

B、處理request header部分的註解:   @RequestHeader, @CookieValue;

C、處理request body部分的註解:@RequestParam,  @RequestBody;

D、處理attribute型別是註解: @SessionAttributes, @ModelAttribute;

第二部分

1、@requestBody屬於springMVC註解,用來處理前端傳來的引數;RequestBody extends Annotation

2、@requestBody註解常用來處理content-type不是預設的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json型別。



    通過@requestBody可以將請求體中的JSON字串繫結到相應的bean上,當然,也可以將其分別繫結到對應的字串上。
    例如說以下情況:
    $.ajax({
        url:
"/login",         type:"POST",         data:'{"userName":"admin","pwd","admin123"}',         content-type:"application/json charset=utf-8",         success:function(data){           alert("request success ! ");         }     });     @requestMapping("/login")     public void login(@requestBody String userName,@requestBody String pwd){       System.out.println(userName
+" :"+pwd);     }     這種情況是將JSON字串中的兩個變數的值分別賦予了兩個字串,但是呢假如我有一個User類,擁有如下欄位:       String userName;       String pwd;     那麼上述引數可以改為以下形式:@requestBody User user 這種形式會將JSON字串中的值賦予user中對應的屬性上     需要注意的是,JSON字串中的key必須對應user中的屬性名,否則是請求不過去的。

3、在一些特殊情況@requestBody也可以用來處理content-type型別為application/x-www-form-urlcoded的內容,只不過這種方式不是很常用,在處理這類請求的時候,@requestBody會將處理結果放到一個MultiValueMap<String,String>中,這種情況一般在特殊情況下才會使用,例如jQuery easyUI的datagrid請求資料的時候需要使用到這種方式、小型專案只建立一個POJO類的話也可以使用這種接受方式。

關注公眾號,我們就從陌生變成了相識,從此我們就成為了朋友,共同學習共同進步!

來都來了點個贊再走唄!