当前位置: 首页 > news >正文

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

目录

1. 使用数组传参

1.2 传递单个参数

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

1.3.1 关于urlencode

2. 使用集合传参


1. 使用数组传参

创建一个Spring MVC项目,其中 .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博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136307074不止Chrome,postman也支持urlencode操作,在postman上构造这种类型的请求也可以成功发送并成功收到响应;

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

.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文件内容如下:

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文件如下:

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博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136488702

相关文章:

  • 模拟退火算法(带你了解原理 实践)
  • 【ELK日志分析系统】ELK+Filebeat分布式日志管理平台部署
  • Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)
  • 如何关闭远程桌面连接
  • day12_SpringCloud(Gateway,Nacos配置中心,Sentinel组件)
  • Linux - 进程概念
  • 补点基础——几何尺寸和公差
  • Linux设备模型(八) - sysfs
  • 全量知识系统问题及SmartChat给出的答复 之13 解析器+DDD+文法型
  • Java,数组加元素,反转数组
  • http和https的区别是什么?
  • 嵌入式学习 Day 30
  • 部署DNS解析服务
  • 【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据】操作批量新增、分页查询(四)
  • 数据分析-Pandas数据y轴双坐标设置
  • 【知识碎片】第三方登录弹窗效果
  • Facebook AccountKit 接入的坑点
  • isset在php5.6-和php7.0+的一些差异
  • Java小白进阶笔记(3)-初级面向对象
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MySQL的数据类型
  • PHP CLI应用的调试原理
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • php面试题 汇集2
  • React as a UI Runtime(五、列表)
  • Spark RDD学习: aggregate函数
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • spring security oauth2 password授权模式
  • 初探 Vue 生命周期和钩子函数
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 高程读书笔记 第六章 面向对象程序设计
  • 规范化安全开发 KOA 手脚架
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 因为阿里,他们成了“杭漂”
  • 走向全栈之MongoDB的使用
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #14vue3生成表单并跳转到外部地址的方式
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (4) PIVOT 和 UPIVOT 的使用
  • (C语言)字符分类函数
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (接口自动化)Python3操作MySQL数据库
  • (六)软件测试分工
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (转载)深入super,看Python如何解决钻石继承难题
  • .htaccess 强制https 单独排除某个目录
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET中的Exception处理(C#)
  • .NET中统一的存储过程调用方法(收藏)