request作用?
1、@requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。
2、通過@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類的話也可以使用這種接受方式。
作用:
i) 該注解用于讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上;
ii) 再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上。