content-type | type | data中数据的传送格式 | data的格式 | springmvc中可以获取数据的方式 |
application/x-www-form-urlencoded | post | Form Data | 必须是json对象 | @RequestParam |
get | Query String Parameters | 必须是json对象 | @RequestParam | |
application/json | post | Request Payload | 必须是json格式字符串 | @RequestBody |
get | Query String Parameters | 必须是json对象 | @RequestParam | |
multipart/form-data | post | Form Data | 一般用于文件上传,当然也可以携带参数 | 可以同file-upload.jar来对数据 |
注意:在application/x-www-form-urlencoded类型下,使用post发送List类型的数据时,后端对应的参数名称应该加上"[]"。因为浏览器会将该content-Type下的List数据进行拆分。
举例:
// demo使用的是jQuery的ajax函数 $.ajax({ url: "mapOfXFU", type: 'POST', cache: false, dataType:'json', contentType: "application/x-www-form-urlencoded;charset=utf-8", data: {name : 'jack', args : [1, 2, 3], args2 : [{id:1}, {id:2}]}, success: function (data) { }, error : function(){ } }); // ---------------------------------------------------------------------------- 发出该ajax请求后,浏览器会将其中的data数据拆分后打包成FormData类型: >Form Data (6) name: jack args[]: 1 args[]: 2 args[]: 3 args2[0][id]: 1 args2[1][id]: 2 // ---------------------------------------------------------------------------- // 后端正确的接口对应 @RequestMapping("/mapOfXFU") @ResponseBody public ResponseObject putListMap(@RequestParam(value = "name", required = false)String name, @RequestParam("args[]")List<String> list) { // do something you want... }