设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间00 现在时间00 缓存数据 对自己狠一点,逼自己努力,再过几年你将会感谢今天发狠的自己、恨透今天懒惰自卑的自己。晚安!

对自己狠一点,逼自己努力,再过几年你将会感谢今天发狠的自己、恨透今天懒惰自卑的自己。晚安!

查看: 693|回复: 1

Spring MVC @RequestParam注解使用场景分析

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:229
  • 打卡月天数:0
  • 打卡总奖励:3350
  • 最近打卡:2025-11-09 02:14:04
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
408
主题
378
精华
0
金钱
4567
积分
848
注册时间
2023-1-5
最后登录
2025-11-9

发表于 2025-8-27 19:52:21 | 显示全部楼层 |阅读模式

@RequestParam注解详解

  1. @RequestParam
复制代码
是 Spring MVC 中最常用的注解之一,用于从 HTTP 请求中提取查询参数(Query String)或表单数据。它主要处理
  1. application/x-www-form-urlencoded
复制代码
类型的请求(如 GET 请求或 POST 表单提交)。

一、核心作用

参数绑定
将请求中的参数值绑定到控制器方法的参数上。

  1. // 示例:获取请求中的 `name` 参数
  2. @GetMapping("/user")
  3. public String getUser(@RequestParam String name) {
  4. return "User: " + name;
  5. }
复制代码
  • 访问
    1. /user?name=Alice
    复制代码
    → 输出
    1. User: Alice
    复制代码

处理可选参数
通过

  1. required
复制代码
属性控制参数是否必须。

  1. @GetMapping("/search")
  2. public String search(@RequestParam(required = false) String keyword) {
  3. return keyword != null ? "Results for: " + keyword : "All items";
  4. }
复制代码
  • 访问
    1. /search
    复制代码
    → 输出
    1. All items
    复制代码
  • 访问
    1. /search?keyword=spring
    复制代码
    → 输出
    1. Results for: spring
    复制代码

二、关键属性

属性说明默认值
  1. value
复制代码
/
  1. name
复制代码
指定请求参数的名称方法参数名
  1. required
复制代码
参数是否必须
  1. true
复制代码
(必须)
  1. defaultValue
复制代码
参数缺失时的默认值

示例:

  1. @PostMapping("/register")
  2. public String register(
  3. @RequestParam("username") String user, // 绑定到"username"参数
  4. @RequestParam(name = "age", defaultValue = "18") int age, // 缺省时默认为18
  5. @RequestParam(required = false) String hobby // 可选参数
  6. ) {
  7. // 业务逻辑
  8. }
复制代码

三、使用场景

获取单个参数

  1. @GetMapping("/detail")
  2. public String detail(@RequestParam Long id) { ... }
复制代码

获取多个同名参数(如复选框)

  1. @PostMapping("/submit")
  2. public String submit(@RequestParam List<String> interests) {
  3. // interests 接收如 ?interests=music&interests=sports 的值
  4. }
复制代码

映射到 Map 对象

  1. @GetMapping("/filters")
  2. public String applyFilters(@RequestParam Map<String, String> filters) {
  3. // 接收所有参数,如 ?category=books&price=100
  4. }
复制代码

四、注意事项

  1. 参数名匹配规则

    • 默认根据方法参数名匹配请求参数(需编译时开启
      1. -parameters
      复制代码
      或显式指定
      1. @RequestParam("param")
      复制代码
      )。
    • 若参数名未指定且编译未保留参数名,会抛出
      1. MissingServletRequestParameterException
      复制代码
  2. 类型转换
    Spring 自动将 String 类型的参数转为目标类型(如

    1. int
    复制代码
    ,
    1. LocalDate
    复制代码
    等)。

    • 转换失败 → 抛出
      1. TypeMismatchException
      复制代码
    1. @PathVariable
    复制代码
    区别

    特性
    1. @RequestParam
    复制代码
    1. @PathVariable
    复制代码
    来源查询字符串(
    1. ?key=value
    复制代码
    URL 路径(
    1. /users/{id}
    复制代码
    是否可选可通过
    1. required=false
    复制代码
    设为可选
    通常是必须的
    示例
    1. /api?page=1
    复制代码
    1. /api/users/123
    复制代码
    1. @RequestBody
    复制代码
    区别

      1. @RequestParam
      复制代码
      :处理 URL 编码数据(简单键值对)。
      1. @RequestBody
      复制代码
      :处理 JSON/XML 等复杂数据(如 POST 请求体)。

五、常见问题解决方案

参数缺失异常

  1. // 方案1: 设置 required=false
  2. @RequestParam(required = false) String param
  3. // 方案2: 提供默认值
  4. @RequestParam(defaultValue = "default") String param
复制代码

参数名冲突
显式指定参数名避免歧义:

  1. public String query(
  2. @RequestParam("from") Date startDate, // 使用"from"作为参数名
  3. @RequestParam("to") Date endDate
  4. ) { ... }
复制代码

接收数组/列表

  1. // 前端传参: ?ids=1,2,3 或 ?ids=1&ids=2
  2. public String getItems(@RequestParam List<Long> ids) { ... }
复制代码

六、最佳实践

  1. 简单查询:优先用
    1. @RequestParam
    复制代码
    处理过滤条件(如分页、排序)。
  2. RESTful 路径:资源标识用
    1. @PathVariable
    复制代码
    (如
    1. /users/{id}
    复制代码
    ),附加参数用
    1. @RequestParam
    复制代码
    (如
    1. /users?role=admin
    复制代码
    )。
  3. 明确命名:避免依赖编译参数名,显式声明
    1. @RequestParam("paramName")
    复制代码
  4. 设置默认值:对分页参数等推荐使用
    1. defaultValue
    复制代码
  1. @GetMapping("/posts")
  2. public Page<Post> getPosts(
  3. @RequestParam(defaultValue = "0") int page,
  4. @RequestParam(defaultValue = "10") int size
  5. ) { ... }
复制代码

总结

  1. @RequestParam
复制代码
是 Spring 中处理请求参数的基石级注解,适用于大多数简单数据绑定场景。掌握其用法能高效处理 URL 编码数据,但复杂 JSON 数据应使用
  1. @RequestBody
复制代码

到此这篇关于Spring MVC @RequestParam注解全解析的文章就介绍到这了,更多相关Spring MVC @RequestParam注解内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
18
积分
16
注册时间
2022-12-24
最后登录
2022-12-24

发表于 昨天 20:41 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表