Spring MVC接收参数那点坑

本文详细介绍了在SpringMVC框架中如何正确接收不同类型的前端参数,包括简单类型、复杂对象、数组、集合及JSON数据。通过实例演示了参数绑定、注解使用及常见问题解决方案。

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

今天通过Spring MVC接收参数,搞了好久就是对不上,在经过一番瞎折腾后(太菜了,只好瞎折腾),总算对上了,总结一下

一、数据类型为username=user&password=123456类型的,如GET,“Content-Type=application/x-www-form-urlencoded”的POST类型

这个接收比较简单,在spring MVC中传入参数名称和表单中传入参数的名称对上即可或者通过@RequestParam("")进性匹配就可以,下面举几个例子

1.简单类型

(1)前台传参名称和后台传参完全匹配

ajax调用(默认是GET方式调用),此处相当于localhost/user/login?loginName=user&password=123456(直接访问可以获取返回值)

server对应的接口

(2)前台传参名称和后台传参名称不匹配

后端通过@RequestParam("param")方式进行匹配

2.复杂参数

(1)接收对象

前台传入的参数名称依旧和后台接收参数的名称对上即可

此处前台传入的loginName和password自动匹配到user.loginName和user.password

 

(2)接收数组,此处踩了不少坑,

首先我尝试着在ajax中直接传个数组试试

emmm,没接收到

查看网页传过去的参数(这个乱码什么玩意)。。。

格式化一下(点下view parsed),看样子那个乱码对应的是“[”和“]”这两玩意的某个编码。。。就是这么传后端接收不了

 

算了按照网上的教程,写个具体表单传值试试。。。

这回总算接收成功了,然后看一下前端传的参数

 

(3)接收集合,有不少坑,数据很容易丢

首先你需要一个封装一个数据类型,此处使用UserVO

public class UserVO {
    public List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }
}

然后直接上表单

 

此出写法注意,需要users[0].userId,必须这种写法,不然后端接收依旧有问题

传过去的数据

后端成功接收(由于后端nickName和前端的nickname不匹配,没成功接收(捂脸))

稍微总结一下

①get和“Content-Type=application/x-www-form-urlencoded”的POST类型本质是将数据转换成key=value类型附在url后传递数据,可以通过chrome的调试模式(F12->network->对应的网络访问)查看传过去的数据

后端接收需要key和参数名对上才可以绑定数据

②数组的参数需要ids=1&ids=2&ids=3这种形式的数据,然后绑定带Integer[] ids上。

③集合参数绑定感觉比较坑,容易漏掉些东西,建议还是用JSON交互吧。。

④如果经常接收不到参数,建议用chrome的调试模式(F12->network->对应的网络访问)查看前端传了个什么数据过来。。。

⑤如果前端传入参数过于复杂,可以用@RequestParam Map<String, Object>来接收所有参数遍历,但对于数组和集合不适用(会被顶掉)

 PS:@RequestParam不能丢,否则接收的就不是前端传过来的参数

 二、Json数据接收

 有空再更。。。

三、Restful接收

有空再更。。。

 

 

 

转载于:https://www.cnblogs.com/lz-0011/p/11140791.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值