spring里面的@RequestParam什么意思

文章目录

    • [💻 场景一:获取 URL 后面的查询参数(Query Parameter)](#💻 场景一:获取 URL 后面的查询参数(Query Parameter))
    • [场景二:获取表单提交的数据(Form Data)](#场景二:获取表单提交的数据(Form Data))
    • [🛠️ `@RequestParam` 的三个常用属性](#🛠️ @RequestParam 的三个常用属性)
      • [1. `required`(是否必填)](#1. required(是否必填))
      • [2. `defaultValue`(默认值)](#2. defaultValue(默认值))
      • [3. `value` / `name`(别名)](#3. value / name(别名))
    • [💡 总结:一句话记住它](#💡 总结:一句话记住它)

在 Spring Boot / Spring MVC 框架中,@RequestParam 是一个非常高频使用的注解。简单来说,它的作用是:把浏览器(客户端)发送过来的请求参数,绑定到你后端方法的参数上。

为了让你一眼看懂,我们直接看最常见的两种应用场景。


💻 场景一:获取 URL 后面的查询参数(Query Parameter)

这是最经典、最常用的场景。比如浏览器访问了下面这个网址:

http://localhost:8080/user?name=Jack&age=18

在这个 URL 后面,用 ? 拼接了两个参数:name=Jack 和 age=18。

后端对应的接收代码就是这样写的:

java 复制代码
@RestController
public class UserController {

    @GetMapping("/user")
    public String getUser(@RequestParam("name") String userName, 
                          @RequestParam("age") Integer userAge) {
        return "接收到用户:" + userName + ",年龄:" + userAge;
    }
}

🔑 它是怎么工作的?

  • @RequestParam("name") String userName 告诉 Spring:"去 URL 里找一个叫 name 的参数,然后把它的值(Jack)赋给方法里的 userName 变量。"
  • 如果你的方法参数名和 URL 里的参数名一模一样 (比如都叫 name),你甚至可以简写为 @RequestParam String name。

场景二:获取表单提交的数据(Form Data)

当用户在网页上填写表单(比如登录、注册),并使用 POST 方式提交时,数据会被放在请求体(Request Body)里,格式通常是 application/x-www-form-urlencoded。

对于这种传统的表单提交,后端同样 是用 @RequestParam 来接收:

java 复制代码
@PostMapping("/login")
public String login(@RequestParam("username") String username,
                    @RequestParam("password") String password) {
    return "正在登录用户:" + username;
}

🛠️ @RequestParam 的三个常用属性

在实际开发中,这个注解还有几个非常好用的"小机关":

1. required(是否必填)

默认情况下,@RequestParam 标注的参数是必须传 的。如果客户端没传这个参数,系统会直接报错(400 Bad Request)。

如果你希望这个参数是可选的,可以把它设为 false:

java 复制代码
// 如果不传 age,程序不会报错,userAge 的值会是 null
@RequestParam(value = "age", required = false) Integer userAge

2. defaultValue(默认值)

当客户端没有传某个参数,或者传的值为空时,你可以给它设置一个默认值。设置了默认值后,required 会自动失效(变成非必填)。

java 复制代码
// 如果客户端没传 page,默认就是 1
@RequestParam(value = "page", defaultValue = "1") Integer page

3. value / name(别名)

用来指定前端传过来的参数名。上面例子中的 @RequestParam("name") 其实就是 @RequestParam(value = "name") 的缩写。


💡 总结:一句话记住它

@RequestParam 就像是一个"快递签收员",专门负责从 URL 链接(?key=value)或者普通的 HTML 表单中,把指定名字的数据签收下来,交给你代码里的变量使用。

相关推荐
小码哥_常5 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
学长毕设8 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw9 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
源码集结号10 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
努力的小雨10 小时前
给 AI 眼镜开发应用有多难?我从零做了一个陪练,还上架了
后端
论文复现现场10 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠11 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David12 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
excel12 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放12 小时前
Python基础语法练习题(73)
java·前端·python