【JavaEE】SpringMVC 请求传参
目录
- 一、请求
- 二、传递单个参数
- 三、传递多个参数
- 四、传递对象
- 五、@RequestParam注解 后端参数重命名(后端参数映射)
- 六、传递数组
- 七、传递集合,@RequestParam
- 八、传递JSON数据
- 8.1 JSON字符串和Java对象互转
- 8.1.1 @Test注解
- 8.1.2 Java对象转JSON
- 8.1.3 JSON转Java对象
- 8.2 传递JSON
- 8.3 后端实现
一、请求
访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求,主要是学习如何传递参数到后端以及后端如何接收.
传递参数, 咱们主要是使⽤浏览器和Postman来模拟.
二、传递单个参数
接收单个参数, 在 Spring MVC 中直接⽤⽅法中的参数就可以
@RestController
@RequestMapping(value = "/user")
public class UserController {@RequestMapping(value = "/m1")public String m1(String request) {return request; }
}
使用浏览器访问:http://127.0.0.1:8080/user/m1?request=hello
使用Postman:

这两种都是键值对模型,其中的键要与方法的参数名一样。
注意事项:
- 使⽤基本类型来接收参数时, 参数必须传(除boolean类型), 否则会报500错误, 类型不匹配时, 会报400错误.


三、传递多个参数
和接收单个参数⼀样, 直接使⽤⽅法的参数接收即可. 使⽤多个形参.
@RestController
@RequestMapping(value = "/user")
public class UserController {@RequestMapping(value = "/m3")public String m3(String s1, int a) {return s1+"参数:"+a;}
}
使用浏览器访问:http://127.0.0.1:8080/user/m3?s1=你好&a=100
使用Postman:

注意事项:
- 这两种都是键值对模型,其中的键要与方法的参数名一样。
- 参数的位置是不影响后端获取参数的结果.
- 基本类型来接收参数时,一样有上述问题。
四、传递对象
如果参数⽐较多时, ⽅法声明就需要有很多形参. 并且后续每次新增⼀个参数, 也需要修改⽅法声明. 我们不妨把这些参数封装为⼀个对象.
实例:
public class Person {private int id;private String name;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +'}';}
}@RestController
@RequestMapping(value = "/user")
public class UserController {@RequestMapping(value = "/m4")public String m4(Person person){return person.toString();}
}

注意事项:
- 要传类中的成员名,不包含类对象名。
- 由于类定义会给成员默认值,这里没有基本类型不传值报错问题。
五、@RequestParam注解 后端参数重命名(后端参数映射)
某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 可以不⼀致。
使用@RequestParam注解
实例:
@RestController
@RequestMapping(value = "/user")
public class UserController {@RequestMapping(value = "/m5")public String m5(@RequestParam(value = "s")String string) {return string;}
}

注意事项:
- 使⽤
@RequestParam进⾏参数重命名时, 请求参数只能和@RequestParam声明的名称⼀
致, 才能进⾏参数绑定和赋值. - 使⽤
@RequestParam进⾏参数重命名时, 参数就变成了必传参数. - 要将参数变成非必传参数,需要将required = false
六、传递数组
Spring MVC 可以⾃动绑定数组参数的赋值
实例:
@RestController
@RequestMapping(value = "/user")
public class UserController {@RequestMapping(value = "/m6")public String m6(String[] strings) {return Arrays.toString(strings);}
}

注意事项:
- 使用Postman传参的时候,每个数组值通过逗号隔开。
- 当需要传逗号作为值的时候,就需要传解码encode后的值。
- 在使用浏览器URL访问时,也需要将非英文字母,全部encode。
七、传递集合,@RequestParam
集合参数:和数组类似, 同⼀个请求参数名有为多个, 且需要使⽤ @RequestParam 绑定参数关系
实例:
@RestController
@RequestMapping(value = "/user")
public class UserController {@RequestMapping(value = "/m7")public String m7(@RequestParam ArrayList<String> strings) {return strings.toString();}
}

注意事项:
- 与传递数组同
八、传递JSON数据
JSON就是⼀种数据格式, 有⾃⼰的格式和语法, 使⽤⽂本表⽰⼀个对象或数组的信息, 因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换.
JOSN语法:
- 数据在 键值对(Key-Value) 中
- 数据由逗号, 分隔
- 对象⽤ { } 表⽰
- 数组⽤ [ ] 表⽰
- 值可以为对象, 也可以为数组, 数组中可以包含多个对象
- 键key和值value之间通过冒号分割
- 键值对之间使用逗号分割

JSON优点
- 简单易⽤: 语法简单,易于理解和编写,可以快速地进⾏数据交换
- 跨平台⽀持: JSON可以被多种编程语⾔解析和⽣成, 可以在不同的平台和语⾔之间进⾏数据交换和
传输- 轻量级: 相较于XML格式, JSON数据格式更加轻量级, 传输数据时占⽤带宽较⼩, 可以提⾼数据传输
速度- 易于扩展: JSON的数据结构灵活,⽀持嵌套对象和数组等复杂的数据结构,便于扩展和使⽤
- 安全性: JSON数据格式是⼀种纯⽂本格式,不包含可执⾏代码, 不会执⾏恶意代码,因此具有较⾼
的安全性
8.1 JSON字符串和Java对象互转
我们在这介绍使用Jackson方式转换,因为这个是Spring中集成了的,不用引入依赖。
还有fastjson,gson。
8.1.1 @Test注解
在我们写测试代码时我们在test这个包下面写。
我们可以直接写main方法,也可以使用@Test这个方法注解在测试方法前面加上,这个注解作用相当于为方法开一个线程。所以可以写多个被@Test修饰的方法同时运行。
8.1.2 Java对象转JSON
使用类ObjectMapper下面的writeValueAsString方法。类对象必须要有无参构造函数。
步骤:
- 创建ObjectMapper对象
- 创建对象
- 直接调用writeValueAsString 将对象转换为JSON
@Test
void testObjectToJson() throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();//创建对象Person person = new Person();person.setId(1);person.setName("zhangsan");person.setPassword("111");//对象转JSONString j = objectMapper.writeValueAsString(person);System.out.println(j);}
8.1.3 JSON转Java对象
使用类ObjectMapper下面的readValue方法。
- 创建ObjectMapper对象
- 创建json
- 直接调用readValue将json转换为对象
@Testvoid testJsonToObject() throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();//创建jsonString s = "{\"id\":1,\"name\":\"zhangsan\",\"password\":\"111\"}";//JSON转对象Person person = objectMapper.readValue(s,Person.class);System.out.println(person);}
8.2 传递JSON
8.3 后端实现
我们只需要在方法参数上加上@RequestBody这个注解。
RequestBody: 请求正⽂,意思是这个注解作⽤在请求正⽂的数据绑定,请求参数必须在写在请求正⽂中
@RequestMapping(value ="/j1")public String j1(@RequestBody Person person) {return person.toString();}
postman传参

相关文章:
【JavaEE】SpringMVC 请求传参
目录 一、请求二、传递单个参数三、传递多个参数四、传递对象五、RequestParam注解 后端参数重命名(后端参数映射)六、传递数组七、传递集合,RequestParam八、传递JSON数据8.1 JSON字符串和Java对象互转8.1.1 Test注解8.1.2 Java对象转JSON8.…...
观察者模式说明(C语言版本)
观察者模式主要是为了实现一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面使用C语言实现了一个具体的应用示例,有需要的可以参考…...
LeetCode 230.二叉搜索树中第K小的元素
题目:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 思路: 代码: /*** Definition for a binary tree node.* public class Tre…...
11、集合框架
一、简介 Java集合框架位于java.util包中 Collection是Set和List的父类,Collections是工具类,提供了对集合进行排序、遍历等多种算法的实现。 ArrayList: 有序(放进去顺序和拿出来顺序一致),可重复 HashSet: 无序(放进去顺序和拿出来顺序不…...
git常用指令详解
文章目录 Git 基本指令的使用Git 远程仓库Git的分支管理 Git 基本指令的使用 git init //初始化一个git仓库,在当前目录下生成.git文件夹,并且会默认生成一个master分支。git clone <url> [directory] //url为git仓库地址,directory为本地目录 gi…...
Debezium 报错:“The db history topic is missing” 的处理方法
Debezium 报错:“The db history topic is missing” 的处理方法 一、引言 在使用 Debezium 进行数据同步时,可能会遇到一个常见的错误:“The db history topic is missing”。这个错误表明 Debezium 无法找到或访问其数据库历史记录主题(db history topic),这通常是由…...
Grok 3.0 Beta 版大语言模型评测
2025年2月17日至18日,全球首富埃隆马斯克(Elon Musk)携手其人工智能公司xAI,在美国重磅发布了Grok 3.0 Beta版。这款被誉为“迄今为止世界上最智能的语言模型”的AI,不仅集成了先进的“DeepSearch”搜索功能࿰…...
AcWing 3691:有向树形态 ← 卡特兰数 + 复旦大学考研机试题
【题目来源】 https://www.acwing.com/problem/content/3694/ 【题目描述】 求 N 个相同结点能够组成的二叉树的个数。 【输入格式】 一个整数 N。 【输出格式】 输出能组成的二叉树的个数。 【数据范围】 1≤N≤20 【输入样例】 3 【输出样例】 5 【算法分析】 ● 卡特…...
便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)
便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets) 版本:1.0 日期:2023年10月 一、系统概述 1.1 功能需求 开机流程:长按电源键启动,全屏显示商标动画(快闪3~4次)。主界面&…...
SpringBoot源码解析(十一):准备应用上下文
SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…...
CSS 使用white-space属性换行
一、white-space属性的常见值 * 原本格式: 1、white-space:normal 默认值,空格和换行符会被忽略过滤掉;宽度不够时文本会自动换行 * 宽度足够时,normal 处理后的格式 * 宽度不够时, normal 处理后的格式 2、white-spa…...
论文笔记(七十二)Reward Centering(四)
Reward Centering(四) 文章概括摘要附录A 伪代码 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.09999…...
Matlab——图像保存导出成好看的.pdf格式文件
点击图像的右上角,点击第一个保存按钮键。...
官方文档学习TArray容器
一.TArray中的元素相等 1.重载一下 元素中的 运算符,有时需要重载排序。接下来,我们将id 作为判断结构体的标识。 定义结构体 USTRUCT() struct FXGEqualStructInfo {GENERATED_USTRUCT_BODY() public:FXGEqualStructInfo(){};FXGEqualStructInfo(in…...
unxi-进程间通信
1.进程间通信实现方式 【1】同一主机 linux下通信方式: a.传统的进程间通信方式 管道 --- 进行数据传输的"管道" 无名管道 有名管道 信号 --- b.system v 进程间通信 (posix 进程间通信) 共享内存 (进程间…...
微型分组加密算法TEA、XTEA、XXTEA
微型分组加密算法TEA、XTEA、XXTEA TEA(Tiny Encryption Algorithm)算法是一种分组加密算法,由剑桥大学计算机实验室的David Wheeler和Roger Needham于1994年发明。TEA、XTEA、XXTEA算法采用64位的明文分组和128位的密钥。它使用Feistel…...
conda 基本命令
1、查询当前所有的环境 conda env list 2、创建虚拟环境 conda create -n 环境名 [pythonpython版本号] 其中[pythonpython版本号]可以不写 conda create -n test python3.12 我们输入conda env list看到我们的环境创建成功了,但是发现他是创建在我们默认的C盘的…...
详解 为什么 tcp 会出现 粘包 拆包 问题
TCP 会出现 粘包 和 拆包 问题,主要是因为 TCP 是 面向字节流 的协议,它不关心应用层发送的数据是否有边界,也不会自动分割或合并数据包。由于 TCP 的流控制和传输机制,数据可能在传输过程中被拆分成多个小的 TCP 包,或…...
Linus的基本命令
以下是一些常见的 Linux 命令: 一、文件和目录操作: - ls:列出目录中的文件和子目录,常用参数有 -a (显示所有文件,包括隐藏文件)、 -l (显示详细信息)、 -h ࿰…...
【Linux】缓冲区和文件系统
个人主页~ 缓冲区和文件系统 一、FILE结构1、fd2、缓冲区(一)有换行有return全部打印(二)无换行无return的C接口打印(三)无换行无return的系统调用接口打印(四)有换行无return的C接口…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
