springmvc接收引數的方法
1.首先說下postman中 form-data、x-www-form-urlencoded、raw、binary對應的各種使用方法及區別
1、form-data:
就是http請求中的multipart/form-data,它會將表單的資料處理為一條訊息,以標籤為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳檔案。當上傳的欄位是檔案時,會有Content-Type來說明檔案型別;content-disposition,用來說明欄位的一些資訊;
由於有boundary隔離,所以multipart/form-data既可以上傳檔案,也可以上傳鍵值對,它採用了鍵值對的方式,所以可以上傳多個檔案。
2、x-www-form-urlencoded:
就是application/x-www-from-urlencoded,會將表單內的資料轉換為鍵值對,比如,name=java&age = 23
3、raw
可以上傳任意格式的文字,可以上傳text、json、xml、html等
4、binary
相當於Content-Type:application/octet-stream,從字面意思得知,只可以上傳二進位制資料,通常用來上傳檔案,由於沒有鍵值,所以,一次只能上傳一個檔案。
multipart/form-data與x-www-form-urlencoded區別
multipart/form-data:既可以上傳檔案等二進位制資料,也可以上傳表單鍵值對,只是最後會轉化為一條資訊;
x-www-form-urlencoded:只能上傳鍵值對,並且鍵值對都是間隔分開的。
curl http://127.0.0.1:8080/hello -d "name=99" //這樣發出的就是content-type:applicationx-www-form-urlencoded的訊息
curl -H "content-type:application/json"
GET、POST方式提交的請求:
Content-type:
1、application/x-www-form-urlencoded:@RequestBody不是必須加的
2、mutipart/form-data:@RequestBody不能處理這種格式
3、其他格式,比如application/json,application/xml等,必須使用@RequestBody來處理
PUT方式提交的請求:
以上1和3的場景都是必須使用@RequestBody來處理的,2場景也是不支援的
前端程式碼如下:(這裡必須將JSON物件使用JSON.stringify()轉為JSON字串再傳遞,否則後臺接收不到值)
$.ajax({ url:"../../Notice/LoadForm.do", type:"post", contentType:"application/json;charset=UTF-8", data:JSON.stringify({"id":"1","title":"標題"}) });
後臺接收程式碼示例
@RequestMapping(value="Notice/LoadForm") @ResponseBody public ResultJO loadForm(@RequestBody Notice notice){ }