SpringMVC 请求参数接收详解|单个参数、多参数、对象参数、@RequestParam参数重命名
目录前言一、项目准备1.1 Person实体类1.2 RequestController控制器二、接收单个参数 r1()三、基本类型与包装类型大坑 r2()Boolean参数 r3()四、接收多个参数 r4()五、使用Java对象(Person)接收参数 r5()六、RequestParam 参数重命名 r6()场景RequestParam注解源码关键属性RequestParam小结七、常见报错汇总八、总结拓展阅读PDF知识点回顾前言SpringMVC是基于Servlet API构建的Web框架在SpringBoot项目中勾选Spring Web依赖底层就是SpringMVC框架。 Web开发中最核心的环节浏览器/Postman发送请求后端接收请求参数执行业务逻辑返回响应结果。本文结合课堂实战代码讲解SpringMVC接收url查询参数的几种常见方式接收单个普通参数基本类型 vs 包装类型踩坑接收多个参数使用实体类(Pojo)接收参数RequestParam参数重命名、设置非必传参数测试工具Postman或者浏览器地址栏直接拼接参数测试一、项目准备创建SpringBoot项目勾选Spring Web依赖。 两个核心类Person.java实体类、RequestController.java控制器。1.1 Person实体类package com.bit.spingmvcdemo.RequestController; public class Person { private String name; private Integer gender; private int age; private String email; public Person() { } public Person(String name, Integer gender, int age) { this.name name; this.gender gender; this.age age; } public String getName() { return name; } public void setName(String name) { this.name name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age age; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email email; } Override public String toString() { return Person{ name name \ , age age , gender gender , email email \ }; } }1.2 RequestController控制器package com.bit.spingmvcdemo.RequestController; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(/request) public class RequestController { // 1.接收单个字符串参数 RequestMapping(/r1) public String r1(String s1){ return 接受到参数: s1; } // 2.接收包装类型参数 RequestMapping(/r2) public String r2(Integer age){ if (agenull){ return 参数不能为null; } return 接受到参数: age; } // 3.布尔类型参数 RequestMapping(/r3) public String r3(Boolean flag){ return 接受到参数: flag; } //4.接收多个参数 RequestMapping(/r4) public String r4(String name, Integer age){ return String.format(接受到参数: 姓名[%s], age[%d], name, age); } //5.对象接收参数 RequestMapping(/r5) public String r5(Person person){ return 接受到参数: person; } //6.RequestParam参数重命名设置非必传 RequestMapping(/r6) public String r6(RequestParam(value sa, required false) String name){ return 接受到参数: name; } }知识点RestController Controller ResponseBody该类所有方法返回值直接作为http响应数据不会去找视图页面。二、接收单个参数 r1()代码RequestMapping(/r1) public String r1(String s1){ return 接受到参数: s1; }访问地址http://127.0.0.1:8080/request/r1?s1helloworld规则请求参数key和方法形参名字保持一致SpringMVC自动赋值如果不传s1参数s1值为null不会报错。三、基本类型与包装类型大坑 r2()RequestMapping(/r2) public String r2(Integer age){ if (agenull){ return 参数不能为null; } return 接受到参数: age; }访问http://127.0.0.1:8080/request/r2?age18⚠️重点踩坑如果形参写int age基本数据类型请求不传age直接报500内部服务器错误。基本类型不能接收null。如果形参写Integer age包装类不传参数时age null程序不会崩溃。企业开发建议接收前端参数尽量使用包装类型Integer、Boolean不要使用int、boolean基本类型。Boolean参数 r3()RequestMapping(/r3) public String r3(Boolean flag){ return 接受到参数: flag; }传参?flagtrue/?flagfalse不传参得到null。四、接收多个参数 r4()RequestMapping(/r4) public String r4(String name, Integer age){ return String.format(接受到参数: 姓名[%s], age[%d], name, age); }访问http://127.0.0.1:8080/request/r4?namezhangsanage20规则url使用分割多个参数。参数顺序无关只匹配参数名称?age20namezhangsan同样可以拿到数据。某个参数不传对应变量为null包装类。五、使用Java对象(Person)接收参数 r5()RequestMapping(/r5) public String r5(Person person){ return 接受到参数: person; }访问地址http://127.0.0.1:8080/request/r5?name张三gender1age22emailtestqq.com核心规则请求参数的key必须和Person实体类的成员变量名完全一致。SpringMVC底层调用setter方法给属性赋值实体类必须有无参构造方法。某个参数不传引用类型赋值null基本类型int age会赋默认值0。注意这里是接收url查询参数、form表单参数不是接收JSON接收JSON需要加RequestBody注解。六、RequestParam 参数重命名 r6()场景前端传的参数名字和后端方法参数名字不一致例如前端参数名叫sa后端变量叫name此时使用RequestParam注解做映射。RequestMapping(/r6) public String r6(RequestParam(value sa, required false) String name){ return 接受到参数: name; }访问http://127.0.0.1:8080/request/r6?satestdataRequestParam注解源码关键属性public interface RequestParam { String value() default ; //前端参数名称 boolean required() default true; //是否必传默认true不传直接400报错 String defaultValue() default ; //默认值 }required true默认参数必须传递否则返回400 Bad Request。required false参数非必传不传时变量等于null。坑点如果不加requiredfalse访问/request/r6不带sa参数直接400错误。RequestParam小结写法参数是否必传作用RequestParam(sa) String name✅必传将前端sa映射到后端nameRequestParam(valuesa,requiredfalse) String name❌非必传映射允许不传参String name❌非必传参数名必须完全一致七、常见报错汇总500 内部错误Optionat int parameter ageis present but cannot be translated into a null value原因使用int基本类型接收前端不传参数。解决改为包装类型Integer age。400 Bad RequestMissingServletRequestParameterException原因RequestParam默认requiredtrue但是请求没有携带对应参数。 解决设置requiredfalse或者前端必须传递该参数。对象接收参数属性全部null排查①参数名和实体类属性名不一致②实体类没有无参构造③没有setter方法。八、总结接收简单参数方法形参名与请求参数名保持一致自动注入。参数类型优先包装类Integer/Boolean避开基本类型null赋值异常。参数多的时候直接封装POJO实体类接收减少方法形参。前后端参数名不一致用RequestParam(valuexxx)做映射requiredfalse设置非必传。RequestParam默认必传不传直接400开发很容易踩坑。

相关新闻

REFramework 稳定运行避坑指南:3 问定位《怪物猎人:荒野》闪退

REFramework 稳定运行避坑指南:3 问定位《怪物猎人:荒野》闪退

REFramework 稳定运行避坑指南:3 问定位《怪物猎人:荒野》闪退 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework 《怪物猎…

2026/8/25 5:05:24 阅读更多 →
腾讯云Agent Memory实战:AI智能体记忆机制解析与应用

腾讯云Agent Memory实战:AI智能体记忆机制解析与应用

1. 从“金鱼脑”到“活档案”:为什么AI记忆是下一个必争之地最近在折腾各种AI Agent项目时,我遇到了一个非常典型且恼人的问题:我让Agent帮我规划一个为期三天的技术分享会日程,第一天它给出了一个包含主题、嘉宾、时间段的详细表…

2026/8/26 7:06:24 阅读更多 →
VSCode 调试多模块 Maven Spring Boot 后端踩坑:3 个配置缺一不可

VSCode 调试多模块 Maven Spring Boot 后端踩坑:3 个配置缺一不可

有没有遇到过这种糟心时刻:后端 Spring Boot 项目在本地用 mvn spring-boot:run 跑得顺顺当当,一进 VSCode 点调试按钮,不是报「找不到主类」,就是配置文件不生效、连不上本地数据库?尤其是多模块的 Maven 项目&#x…

2026/8/25 5:05:24 阅读更多 →

最新新闻

基于YOLOv5的手部X光骨骼检测:从数据工程到模型部署实战

基于YOLOv5的手部X光骨骼检测:从数据工程到模型部署实战

1. 项目缘起:从一张X光片说起作为一名长期混迹于计算机视觉和医疗影像交叉领域的技术人,我经常被问到:“你们搞AI的,到底能不能帮医生看片子?” 这个问题背后,是临床医生每天面对海量影像数据时&#xff0c…

2026/8/26 7:06:16 阅读更多 →
电子罗盘倾斜补偿算法:从原理到嵌入式实现的实战指南

电子罗盘倾斜补偿算法:从原理到嵌入式实现的实战指南

1. 项目概述:从指南针到智能感知的核心电子罗盘,或者说数字罗盘,早已不是我们印象中那个躺在历史课本里的司南了。它是一套集成了磁传感器、加速度计,有时还有陀螺仪的微型系统,核心任务就是告诉你“哪边是北”。听起来…

2026/8/26 7:06:16 阅读更多 →
TRACES基准:让AI研究过程可审计、可复现的评估框架

TRACES基准:让AI研究过程可审计、可复现的评估框架

TRACES 基准的核心目标,是把“AI 探索性研究过程”从黑盒变成可审计的过程数据。传统评测往往只关心最终答案正确与否,但在研究型任务中,同一个结论可以由质量完全不同的过程产生:有的经过多轮检索、交叉验证和反例排除&#xff0…

2026/8/26 7:06:16 阅读更多 →
AI求职社群的价值与运营模式解析

AI求职社群的价值与运营模式解析

1. 项目背景与核心价值最近在技术社区看到一个很有意思的社群招募——"最大的AI求职群来了!"。作为一个在AI行业摸爬滚打多年的从业者,我深知这个领域的求职痛点。AI岗位的特殊性在于,它既要求扎实的算法基础,又需要丰富…

2026/8/26 7:06:16 阅读更多 →
无线充电深度解析:原理、兼容性、速度与桌面改造全攻略

无线充电深度解析:原理、兼容性、速度与桌面改造全攻略

很多人对无线充电的第一印象是“慢”、“热”、“不如插线实在”。两年前我也是这么想的,直到我把主力机换成支持磁吸无线充的机型,又在办公桌上完整跑了一轮各种充电板的横评,这个看法才彻底改观。Wireless Charging这个领域,早已…

2026/8/26 7:06:16 阅读更多 →
NLP期末大作业高分攻略:中文文本分类项目全流程实战

NLP期末大作业高分攻略:中文文本分类项目全流程实战

简介:自然语言处理(NLP)中,文本分类是最基础且应用广泛的任务之一,其核心在于通过算法自动将文本划分到预定义类别。从传统机器学习到深度学习,模型通过提取词序与语义特征实现分类。在工程实践中&#xff…

2026/8/26 7:05:16 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →