springmvc controller入参Object与前台ajax发送注意项

本文详细介绍了SpringMVC中Controller如何处理AJAX请求的参数,包括GET方式下对象参数转化为URL查询字符串,POST方式下通过序列化字符串匹配实体类属性,以及使用@RequestBody接收List对象的方法。内容涵盖了不同请求类型的数据传递方式和后台入参的匹配规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.get方式
$.ajax({
url : ly.getWebRootPath() + "/userController/edit";,
data : rowData,

dataType : "json",

a.以上没写type默认为type=“GET”

b.rowData为json对象{"username":"u","password":"p"}

c.由于上述是get方式所以请求会是userController/add?username=u&password=p,(ps;在chrome-Network查看Headers--Query String Parameters

d.后台直接如下封装进入参user

@RequestMapping("/add")
@ResponseBody
public Json add(User user){})


2.post方式封装多个参数 包括分页

$.ajax({
url : /usrController/getAllUsers,
data : $("#form").serialize(),//此处用的是序列化字符串
type : "POST", 

a.前台


b.后台如下 getAllUsers所有入参都会一一与与a前端截图中的Form Data数据匹配

(比如有一个username:"name" ,第一个入参user有方法setUsername则会set进去,同时第三个入参username刚好是RequestParam("username"),

那么第三入参也赋值,)

/**

* @param page 分页参数
* @param user 实体参数   --   @ModelAttribute---userListSearch对应前台Form表单ID
* getAllUsers(Page page, @ModelAttribute(ID)User user)
* getAllUsers(Page page, User user,@RequestParam(value="username",required=false)String username)
* @return
*/
@RequestMapping("/getAllUsers")
@ResponseBody
public Map<String, Object> getAllUsers(Page page, User user,@RequestParam(value="username",required=false)String username) {
System.out.println(page);


3.post方式(@RequestBody接受List对象)

前台:

$.ajax({
url : ly.getWebRootPath() + "/userController/delete",
data : JSON.stringify(rowDatas),
type : "POST",
dataType : "json",
contentType :  "application/json;charset=utf-8",

a.type为post

b.data一定要转出json对象的字符串形式

c.指定contentType为json格式便于后台消费

后台:

@RequestMapping(value = "/delete", method = {RequestMethod.POST}, consumes = "application/json")
@ResponseBody
public Json delete(@RequestBody List<User> users) throws UserException {

a.@RequestMapping consumes = "application/json"接收消费前台json对象字符串

b.入参用@RequestBody



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值