springMVC中 @RequestParam和@RequestBody的區別


首先,不可以同時傳進@RequestParam和@RequestBody,好像可以傳進兩個@RequestParam

如果不加@requestparam修飾,相當於 加上@requestparam且各個requestparam的屬性值都為默認的!

 


@RequestParam 

 

A) 常用來處理簡單類型的綁定,通過Request.getParameter() 獲取的String可直接轉換為簡單類型的情況( 由String到 簡單類型的轉換操作由ConversionService配置的轉換器來完成);因為使用request.getParameter()方式獲取參數,所以可以處理get 方式中queryString的值,也可以處理post方式中 body data的值。

B)用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容,提交方式GET、POST。(不設置這個屬性,好像這就是默認值)

C) 該注解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示參數是否必須綁定。
在方法參數里面如是:public @ResponseBody JsonResult getPublishedToposByConnStreamId(@RequestParam(value = "streamId", required = false) String streamId) {}

 

@RequestBody


A) GET、POST方式提時, 根據request header Content-Type的值來判斷:
    application/x-www-form-urlencoded, 可選(即非必須,因為這種情況的數據@RequestParam, @ModelAttribute也可以處理,當然@RequestBody也能處理);
    multipart/form-data, 不能處理(次類型多用來上傳文件類型---即使用@RequestBody不能處理這種格式的數據,@RequestParam這個卻是可以處理的。);
    其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的數據,必須使用@RequestBody來處理);


B) PUT方式提交時, 根據request header Content-Type的值來判斷:(表示沒見過put方式滴,可以無視吧。)
    application/x-www-form-urlencoded, 必須;
    multipart/form-data, 不能處理;
    其他格式, 必須;


說明:request的body部分的數據編碼格式由header部分的Content-Type指定;

 

最后

就我的經驗來看:

@RequestBody這個一般處理的是在ajax請求中聲明contentType: "application/json; charset=utf-8"時候。也就是json數據或者xml(我沒用過這個,用的是json)

@RequestParam這個一般就是在ajax里面沒有聲明contentType的時候,為默認的。。。
---------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM