springMVC中@RequestParam和@RequestBody的作用
@RequestParam和@RequestBody是什麼區別,估計很多人還是不太清楚,
因為一般用@ RequestParam就足夠傳入引數了,要說他們區別,就需要知道contentType是什麼?
Content-Type: 預設為 application/x-www-form-urlencoded編碼的內容,提交方式可以是GET、POST
GET、POST:一般處理得是Content-Type:
application/x-www-form-urlencoded
multipart/form-data
其他格式包括application/json, application/xml等。這些格式的資料,必須使用@RequestBody來處理
PUT:
根據request header Content-Type的值來判斷:
application/x-www-form-urlencoded可以;
multipart/form-data, 不能處理;
其他格式可以;
@RequestBody這個一般處理的是在ajax請求中宣告contentType: "application/json; charset=utf-8"時候。也就是json資料或者xml
@RequestParam這個一般就是在ajax裡面沒有宣告contentType的時候,為預設的。。。urlencode格式時,用這個
@ReqeustBody:
常用來處理content-type不是預設的application/x-www-form-urlcoded編碼的內容,
好比:application/json或者是application/xml等,常常用來其來處理application/json型別
注意:@requestBody接收的是前端傳過來的json字串,而不是物件
@ResponseBody:
用於將Controller的方法返回的物件,通過HttpMessageConverter介面轉換為指定格式的資料如:json,xml等,通過Response響應給客戶端.
注意:不一定只能傳遞字串,若有對應的java類,springMVC會自動幫忙轉換成符合要求的資料格式(json/xml)