SpringMVC 请求参数接收详解|单个参数、多参数、对象参数、@RequestParam参数重命名

发布时间:2026/8/25 5:04:48

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开发很容易踩坑。

相关新闻

基于Codex与ChatGPT的金融数据自动化处理工具部署与测试指南

基于Codex与ChatGPT的金融数据自动化处理工具部署与测试指南

2026/8/25 4:54:47

这次我们来看一个名为“ChatGPT Work与Codex银行重置”的项目。根据标题和网络热词,这很可能是一个围绕OpenAI的Codex模型(或其衍生服务)和ChatGPT Work功能进行集成或重置的工具或服务。核心焦点在于“银行重置”,这可能意味着该…

可解释Transformer模型在临床预测任务中的部署与应用指南

可解释Transformer模型在临床预测任务中的部署与应用指南

2026/8/25 4:54:47

这次我们来看一个将Transformer模型应用于临床预测任务的开源项目。这个项目的核心目标不是简单地展示模型精度,而是解决一个更实际的问题:如何在结构化电子健康记录数据上,不仅做出准确的预测,还能让医生理解模型“为什么”做出这…

机器人跳舞背后的技术:从运动控制到具身智能的实践解析

机器人跳舞背后的技术:从运动控制到具身智能的实践解析

2026/8/25 4:54:47

你刷到过那个视频吗?——在某个科技展会上,一排人形机器人整齐划一地跳舞,动作流畅,甚至还有点“卡点”。很多人第一反应是“酷炫”,然后划走。但如果你停下来,把“机器人跳舞”这个现象,从一次…

2026年采购智能鞋头后跟定型机,选哪家工厂性价比更高?

2026年采购智能鞋头后跟定型机,选哪家工厂性价比更高?

2026/8/25 5:54:50

最近不少鞋厂老板都在为明年的设备采购做规划:国内扩产建新厂要算产能匹配,越南、柬埔寨的外资厂要考虑本地售后,大家问得最多的就是“智能鞋头后跟定型机选哪家不踩坑?” 毕竟定型机的温控精度、运行稳定性直接决定鞋款成型合格率…

MLLM引导语义校正:用大模型优化AI视频生成逻辑

MLLM引导语义校正:用大模型优化AI视频生成逻辑

2026/8/25 5:54:50

最近在尝试用AI生成视频时,你是不是也遇到过这样的困惑:明明输入的文本描述是“一只猫在草地上追逐蝴蝶”,但生成的视频里,猫的动作僵硬,背景的草地和蝴蝶也常常“各玩各的”,画面元素之间缺乏逻辑关联&…

opencv的模板匹配

opencv的模板匹配

2026/8/25 5:54:50

看到有人用opencv的模板匹配,其实更多的是相关系数匹配! 从前讲了很多相关系数,就是没去做!其实就是计算复杂度太大,不值得,那是刚好实现了基于形状轮廓的匹配,心思不在opencv上,而且一直从底层…

中级前端工程师核心能力与面试进阶指南

中级前端工程师核心能力与面试进阶指南

2026/8/25 5:54:50

1. 中级前端工程师的职场定位与能力模型作为前端技术领域的核心岗位,中级前端工程师在团队中扮演着承上启下的关键角色。与初级开发者相比,中级工程师需要具备独立承担模块开发、技术方案设计和跨团队协作的能力。根据行业调研数据显示,具备3…

LLM+知识图谱:从240篇技术文档中挖掘515条隐藏关联的实践

LLM+知识图谱:从240篇技术文档中挖掘515条隐藏关联的实践

2026/8/25 5:54:50

1. 项目缘起:当240篇文档变成一座信息孤岛最近接手了一个挺有意思的内部项目,团队在过去一年半里,围绕着某个核心业务方向,零零散散地写了240多篇技术文档、会议纪要和问题复盘报告。这些文档散落在Confluence、GitHub Wiki和一堆…

《我的世界》极简红石隐藏门设计:8方块实现全平台兼容

《我的世界》极简红石隐藏门设计:8方块实现全平台兼容

2026/8/25 5:44:49

你是不是也厌倦了《我的世界》里那些占地庞大、结构复杂的红石隐藏门?想在自己的生存基地或服务器里设计一个既隐蔽又酷炫的入口,却总被繁琐的线路和昂贵的材料劝退?今天,我要分享一个我自己在生存模式中反复验证过的“极简隐藏门…

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

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

2026/8/24 19:53:32

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

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

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

2026/8/24 19:56:07

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

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

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

2026/8/24 21:16:09

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

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…