1. 程式人生 > >springmvc接收引數的方法

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){

}