SpringBoot中Get请求和POST请求接收参数详解
1、Get请求
1.1 方法形参接收参数
-
这种方式一般适用参数比较少的情况,并且前后端参数名称必须保持一致
@RestController
@RequestMapping(“/user”)
@Slf4j
public class DemoController {@GetMapping("/query") public void getStudent(String name,String age) {log.info("name:{}",name);log.info("age:{}",age); }}
-
参数用 @RequestParam 标注,使用value属性指定参数名,required属性表示这个参数是否必传
@RestController
@RequestMapping(“/user”)
@Slf4j
public class DemoController {@GetMapping("/query") public void getStudent(@RequestParam(value = "name", required = false) String name,@RequestParam(value = "age", required = false) String age) {log.info("name:{}",name);log.info("age:{}",age); }}
1.2 实体类接收参数
注意:Get 请求以实体类接收参数时,不能用 RequestParam 注解进行标注,因为不支持这样的方式获取参数。
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(Student student) {log.info("name:{}",student.getName());log.info("age:{}",student.getAge());}
}@Data
class Student{private String name;private Integer age;
}
1.3 通过HttpServletRequest接收参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(HttpServletRequest request) {String name = request.getParameter("name");String phone = request.getParameter("age");log.info("name:{}",name);log.info("age:{}",age);}
}
1.4 通过@PathVariable接收参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query/{name}/{age}")public void getStudent(@PathVariable String name, @PathVariable String age) {log.info("name:{}",name);log.info("age:{}",age);}
}
1.5 接收数组参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(String[] names) {Arrays.stream(names).forEach(System.out::println);}
}
1.6 接受集合参数
注意:SpringBoot 接收集合参数,必须用 @RequestParam 注解声明!
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(@RequestParam List<String> names) {names.forEach(System.out::println);}
}
2、POST请求
2.1 方法形参接收参数
-
前后端参数名称必须保持一致
@RestController
@RequestMapping(“/user”)
@Slf4j
public class DemoController {@PostMapping("/save") public void saveStudent(String name,String age) {log.info("name:{}",name);log.info("age:{}",age); }}
-
参数用 @RequestParam 标注,使用value属性指定参数名,required属性表示这个参数是否必传
@RestController
@RequestMapping(“/user”)
@Slf4j
public class DemoController {@PostMapping("/save") public void saveStudent(@RequestParam(value = "name", required = false) String name,@RequestParam(value = "age", required = false) String age) {log.info("name:{}",name);log.info("age:{}",age); }}
2.2 通过HttpServletRequest接收参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(HttpServletRequest request) {String name = request.getParameter("name");String phone = request.getParameter("age");log.info("name:{}",name);log.info("age:{}",age);}
}
2.3 通过@PathVariable接收参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save/{name}/{age}")public void saveStudent(@PathVariable String name, @PathVariable String age) {log.info("name:{}",name);log.info("age:{}",age);}
}
2.4 通过param方式提交参数,以实体类接收参数
直接以实体类可以接收param、form-data、 x-www-form-urlencoded 提交的参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(Student student) {log.info("name:{}",student.getName());log.info("age:{}",student.getAge());}
}@Data
class Student{private String name;private Integer age;
}
2.5 请求体以JSON格式提交参数,通过 @RequestBody 注解接收参数
-
接受实体类JSON参数
@RestController
@RequestMapping(“/demo”)
@Slf4j
public class DemoController {@PostMapping("/save") public void saveStudent(@RequestBody Student student) {log.info("name:{}",student.getName());log.info("age:{}",student.getAge()); }}
@Data
class Student{
private String name;
private Integer age;
} -
接收数组或者集合类JSON参数
@RestController
@RequestMapping(“/demo”)
@Slf4j
public class DemoController {@PostMapping("/save") public void saveStudent(@RequestBody String[] names) {Arrays.stream(names).forEach(System.out::println); }@PostMapping("/save") public void saveStudent(@RequestBody List<String> names) {names.forEach(System.out::println); }}
2.6 通过 Map 接收参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(@RequestParam Map<String,Object> map) {log.info("name:{}",map.get("name"));log.info("age:{}",map.get("age"));}
}
2.7 通过@RequestBody 接收一个参数
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(@RequestBody String name) {log.info("name:{}",name);}
}
相关文章:
SpringBoot中Get请求和POST请求接收参数详解
1、Get请求 1.1 方法形参接收参数 这种方式一般适用参数比较少的情况,并且前后端参数名称必须保持一致 RestController RequestMapping(“/user”) Slf4j public class DemoController { GetMapping("/query") public void getStudent(String name,Strin…...
分布式日志和责任链路
目录 日志问题 责任链问题 分布式日志 GrayLog简介 部署安装 收集日志 配置Inputs 集成微服务 日志回收策略 搜索语法 搜索语法 自定义展示字段 日志统计仪表盘 创建仪表盘 链路追踪 APM 什么是APM 原理 技术选型 Skywalking简介 部署安装 微服务探针 整合…...
h5 IOS端渐变的兼容问题 渐变实现弧形效果
IOS端使用渐变的时候有兼容问题 以下是问题效果,图中黑色部分期望的效果应该是白色的。但是ios端是下面的样子…… 安卓pc 支持: background-image: radial-gradient(circle 40rpx at 100% 0, #f3630c 40rpx, rgb(255, 255, 255) 50%);安卓pc ios支持…...
哈希算法--猜数字游戏
1.题目要求 输入两个位数相同的数,判断对应位置的数字是否相等,返回两个数。第一个数是数字和位置完全猜对的数字个数,第二个数是数字大小猜对但位置不对的数字个数 2.逐步编程 2.1 定义函数 def g(secret,guess):sec_dic{}gue_dic{}# 定义…...
idea生成自定义Maven原型(archetype)项目工程模板
一、什么是Maven原型(Maven archetype) 引自官网的介绍如下: Maven原型插件官网地址 这里采用DeepSeek助手翻译如下: Maven 原型 什么是原型? 简而言之,原型是一个 Maven 项目模板工具包。原型被定义为一…...
Redis面试常见问题——使用场景问题
目录 Redis面试常见问题 如果发生了缓存穿透、击穿、雪崩,该如何解决? 缓存穿透 什么是布隆过滤器? 缓存击穿 缓存雪崩 双写一致性(redis做为缓存,mysql的数据如何与redis进行同步呢?) …...
样式和ui(待更新)
element-plus 先在项目下执行安装语句执行按需导入的命令按照官方文档修改vitest.json sass样式定制 npm -i sass -D在项目下准备定制的样式文件 styles/element/index.scss(!注意这里是.scss文件在vitest.json 修改配置文件 Components({resolvers: [ElementPlusResolver(…...
大摩闭门会:250228 学习总结报告
如果图片分辨率不足,可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录,进行学习讨论使用...
线程(Thread)
一、概念 线程:线程是一个轻量级的进程 二、线程的创建 1、线程的空间 (1)进程的空间包括:系统数据段、数据段、文本段 (2) 线程位于进程空间内部 (3) 栈区独享、与进程共享文本段、…...
AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命
AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命 ——一场重塑人类认知边界的技术战争 一、OpenAI的“感性觉醒”:GPT-4.5的颠覆与争议 1.1 从“冷面学霸”到“温柔导师”:AI的情商跃迁 当用户输入“朋友放鸽子&…...
DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP
DeepSeek 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...
Java进阶——常用工具类
日常开发中,Arrays、Collections 和 Objects 是非常实用的工具类,提供了丰富的功能,从而可以更高效地处理数组、集合和对象。本文将详细介绍这三个工具类的重要知识细节。 本文目录 一、 Arrays数组转集合并行排序优化Stream 支持 二、 Colle…...
【考试大纲】高级系统架构设计师考试大纲
目录 引言一、 考试说明1.考试目标2.考试要求3.考试科目设置二、 考试范围考试科目1:系统架构设计综合知识考试科目2:系统架构设计案例分析考试科目3:系统架构设计论文引言 最新的系统架构设计师考试大纲出版于 2022 年 11 月,本考试大纲基于此版本整理。 一、 考试说明…...
上位机知识篇---四种CPU架构交叉编译
文章目录 前言一、四种 CPU 架构1. x86/x86_64指令集位宽:应用场景编译工具 2. ARM指令集位宽:应用场景编译工具 3. MIPS指令集位宽应用场景编译工具 4. RISC-V指令集位宽应用场景编译工具 二、交叉编译1. 什么是交叉编译?定义应用场景 2. 交…...
隐式转换为什么导致索引失效
SELECT * FROM users WHERE id 123;这条语句失效的原因就是id是int类型的主键,比较的时候把id从int转化为字符串来比较了,而字符串的比较规则和int的比较规则明显不同,字符串是字典序比较的,还涉及到数据的长度,那为什…...
【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现
项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...
SpringBoot @Value 注解使用
Value 注解用于将配置文件中的属性值注入到Spring管理的Bean中。 1. 基本用法 Value 可以直接注入配置文件中的属性值。 配置文件 (application.properties 或 application.yml) 配置文件定义需要注入的数据。 consumer:username: lisiage: 23hobby: sing,read,sleepsubje…...
Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.3 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 前言安装JDK 17创建Spring Boot 项目 方式1:网页在线生成方式2&#…...
高频 SQL 50 题(基础版)_1667. 修复表中的名字
高频 SQL 50 题(基础版)_1667. 修复表中的名字 select user_id ,concat(upper(substring(name,1,1)),lower(substring(name,2))) as name from Users order by user_id...
Windwos10 系统没有微软商店(Microsoft Store)怎么办?
操作方法 管理员身份打开power shell , 输入 Get-AppxPackage -AllUsers Microsoft.WindowsStore* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “ ( ( (_.InstallLocation)\AppXManifest.xml”} 按下enter按键,就OK了...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
