@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類的話也可以使用這種接受方式。
關注公眾號,我們就從陌生變成了相識,從此我們就成為了朋友,共同學習共同進步!
來都來了點個贊再走唄!