springmvc参数为对象,数组的操作

网友投稿 1102 2022-12-17

springmvc参数为对象,数组的操作

springmvc参数为对象,数组的操作

目录参数为对象1、提交表单2、表单序列化,使用ajax提交3、也可以这样写4、如果结构复杂,使用@RequestBody5、传递数组springmvc接受复杂对象(对象数组)前端:后端:@RequestBody和@RequestParam的区别

参数为对象

1、提交表单

2、表单序列化,使用ajax提交

var data = $("#addForm").serialize();

$.ajax({

url : "addReportDo", //请求url

type : "POST", //请求类型 post|get

taXDcOTi data : data,

dataType : "text", //返回数据的 类型 text|json|html--

success : function(result){ //回调函数 和 后台返回的 数据

alert(result);

}

});

3、也可以这样写

var data = {

title: $("#title").val(),

note: $("#note").val()

};

4、如果结构复杂,使用@RequestBody

需要引用jackson

com.fasterxml.jackson.core

jackson-databind

2.9.5

com.fasterxml.jackson.core

jackson-annotations

2.9.5

com.fasterxml.jackson.core

jackson-core

2.9.5

springmvc.xml配置

text/html;charset=UTF-8

text/json;charset=UTF-8

application/json;charset=UTF-8

js写法

var goods1 = {

goodsNumber: "001",

goodsName: "商品A"

}

var goods2 = {

goodsNumber: "002",

goodsName: "商品B"

}

var goodsList = [goods1,goods2];

var data = {

title: $("#title").val(),

note: $("#note").val(),

goodsList: goodsList

};

console.log(data);

$.ajax({

url : "addReportDo", //请求url

type : "POST", //请求类型 post|get

data : JSON.stringify(data),

contentType : "application/json",

dataType : "text", //返回数据的 类型 text|json|html--

success : function(result){ //回调函数 和 后台返回的 数据

alert(result);

}

});

注意ajax的两个属性,data属性变为JSON.stringify(data),增加contentType属性。

controller代码写法

@ResponseBody

@RequestMapping("addReportDo")

public String addReportDo(@RequestBody Report report){

System.out.println(report);

return "ok";

}

在参数前面加上@RequestBody即可。

5、传递数组

js写法

var array = ["a","b","c"];

var data = {

array : array

};

console.log(data);

$.ajax({

url : "addReportDo", //请求url

type : "POST", //请求类型 post|get

data : data,

dataType : "text", //返回数据的 类型 text|json|html--

success : function(result){ //回调函数 和 后台返回的 数据

alert(result);

}

});

controller写法

@ResponseBody

@RequestMapping("addReportDo")

public String addReportDo(@RequestParam("array[]") String[] array){

System.out.println(Arrays.toString(array));

return "ok";

}

也可以用List接收

@ResponseBody

@RequestMapping("addReportDo")

public String addReportDo(@RequestParam("array[]") List list){

System.out.println(list);

return "ok";

}

springmvc接受复杂对象(对象数组)

前端:

将请求头改为

contentType:"application/json;charset=UTF-8"

后端:

自定义一个对象,将参数封装进该对象中

@Data

public class CaseBodyEntity {

String token;

CaseBasicModel caseBasic;

String[] keywords;

CaseInsurantAndProductModel[] caseInsurantAndProductModels;

CaseExperienceModel[] caseExperiences;

CaseAssessModel[] caseAssesses;

}

使用使用POST方式接受请求,@RequestBody接受请求参数,对象为自定义的接受对象

@ApiOperation("添加或更新案例,后台")

@PostMapping("/addOrUpdateCase")

public JSONObject addOrUpdateCase(

@RequestBody CaseBodyEntity caseBodyEntity

) {

...

}

@RequestBody和@RequestParam的区别

@RequestParam,主要处理contentType为application/x-www-form-urlencoded的数据(默认);@ResponseBody:主要处理contentType不为application/x-www-form-urlencoded的数据,例如:application/json;charset=UTF-8

@RequestParam:要指明前端传过来的参数名并与其对应;@RequestBody:直接对象接收,属性名要与前端传过来的数据的key值对应

使用@RequestParam:Content-Type为application/x-www-form-urlencoded,参数在FormData中;使用@RequestBody:Content-Type为application/json,参数在Request PayLoad中

可以使用多个@RequestParam获取数据;@RequestBody不能在同一个方法中出现多次

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RabbitMQ的基础知识
下一篇:车载生态安全(车载生态系统)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~