【JavaEE】_Spring MVC项目使用数组与集合传参

目录

[1. 使用数组传参](#1. 使用数组传参)

[1.2 传递单个参数](#1.2 传递单个参数)

[1.3 传递多个名称相同的参数](#1.3 传递多个名称相同的参数)

[1.3.1 关于urlencode](#1.3.1 关于urlencode)

[2. 使用集合传参](#2. 使用集合传参)


1. 使用数组传参

创建一个Spring MVC项目,其中 .java文件内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M6")
    public String m6(String[] arrayPara){
        return "ArrayPara has received:\n"
                + Arrays.toString(arrayPara);
    }
}

注:注意返回语句的书写:如果写成 return "ArrayPara has received:\n"+ arrayPara; 返回的是一个地址,需将其转为字符串进行返回;

使用浏览器构造HTTP请求发送给目标地址:

1.2 传递单个参数

1.3 传递多个名称相同的参数

即:当客户端在同一个请求中发送了多个同名的参数,浏览器会帮我们封装为一个数组

1.3.1 关于urlencode

对于1.3 中提到的在同一个请求中传递多个名称相同的参数的问题,

构造该请求时,除了使用&连接的键值对作为query string部分进行多参数传递的方法外,

还可以直接使用逗号连接多个参数值

即构造参数如下:

这种方式会被成功解析是因为Chrome浏览器会进行urlencode,

关于urlencode问题,在本专栏关于servlet项目前端向后端传参时,也曾提及,文章链接如下:

【JavaEE】_前端使用GET请求的queryString向后端传参-CSDN博客https://blog.csdn.net/m0_63299495/article/details/136307074不止Chrome,postman也支持urlencode操作,在postman上构造这种类型的请求也可以成功发送并成功收到响应;

可以加上数组长度的输出语句,验证urlencode操作的执行:

.java文件内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M6")
    public String m6(String[] arrayPara){
        return "ArrayPara has received:\n"
                + Arrays.toString(arrayPara)
                + "\nThe length is: " + arrayPara.length;
    }
}

运行启动类后,使用postman构造如下请求并发送 :

2. 使用集合传参

以List接口为例:

.java文件内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M7")
    public String m7(List<String> listParam){
        return "ListParam has received:\n" +listParam
                +"\nThe length is: " + listParam.size();
    }
}

运行启动类后,使用postman构造如下请求并发送 :

查看错误日志:

表示:默认封装方式为数组,而非List接口

如果需要使用List接口,需要使用一个注解@RequestParam

现修改.java文件如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M7")
    public String m7(@RequestParam(required = false) List<String> listParam){
        return "ListParam has received:\n" +listParam
                +"\nThe length is: " + listParam.size();
    }
}

再次运行启动类,使用postman构造如下请求并发送 :

可见此时参数传递成功;

注:关于@RequestParam注解,在后端代码重命名时也曾使用过,此部分相关原文链接如下:

【JavaEE】_Spring MVC项目之使用对象传参-CSDN博客https://blog.csdn.net/m0_63299495/article/details/136488702

相关推荐
哈喽,树先生37 分钟前
1.Seata 1.5.2 seata-server搭建
spring·springcloud
【D'accumulation】3 小时前
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
java·设计模式·mvc
小菜yh3 小时前
关于Redis
java·数据库·spring boot·redis·spring·缓存
爱上语文5 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
荆州克莱5 小时前
springcloud整合nacos、sentinal、springcloud-gateway,springboot security、oauth2总结
spring boot·spring·spring cloud·css3·技术
拾光师12 小时前
spring获取当前request
java·后端·spring
xujinwei_gingko12 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
Xua305514 小时前
浅谈Spring Cloud:认识微服务
spring·spring cloud·微服务
JOJO___15 小时前
Spring IoC 配置类 总结
java·后端·spring·java-ee