使用@RequestParam注解
前端:
Controller:
这里用List集合、数组都可以接收。GET/POST请求不限。
XHR:
不使用@RequestParam注解
比如这个例子:
浏览器访问:
控制台输出:
接收复杂对象List集合
这里有一个User类:
如果前台有多个User传过来,那么可以这么做:
封装一个类,属性为List<User>:
Controller:
浏览器请求:
但是要注意一个比较坑的地方,如果访问参数中索引直接到20:
会直接跳转到索引为20,而且中间全是null,这是一个比较坑的地方,所以索引最好是连续的。
接收Set集合
SpringMVC对Set集合的绑定不是很友好,因为在SpringMVC中想要接收Set参数,需要首先对这个Set集合进行初始化,而且Set集合的长度要与参数中的长度一致。即比如我想接收Set<User> userSet,那肯定需要封装一个类UserSetForm,其中一个属性是Set<User> userSet,那么接收参数为UserSetForm。而由于接收的Set需要初始化,所以需要在UserSetForm的构造中初始化这个Set<User>,所以这个Set<User>在new出来了之后还要add几个new User(),但是Set集合既然使用了,主要作用肯定又是去重,那就必然要重写User类的hashCode()和equals()方法,这样就造成Set<User>在add new User()的时候一只只能存一个User,所以就很矛盾。
具体可以参这部分源码:
所以建议不要使用Set集合接收参数。