@RequestParam用于绑定HTTP请求的查询参数、表单数据等,默认为必填,可通过defaultValue设默认值(自动转类型且required变为false),支持name指定参数名、接收集合/数组,但空字符串不触发defaultValue。

在 Spring MVC 中,@RequestParam 是最常用的注解之一,用于从 HTTP 请求的查询参数(query string)、表单数据(application/x-www-form-urlencoded)或 URL 路径后的 ?key=value 部分提取值,并绑定到控制器方法的参数上。
基本用法:接收简单查询参数
当请求是 GET /user?name=zhangsan&age=25 时,可直接用 @RequestParam 获取:
@GetMapping("/user")
public String getUser(@RequestParam String name, @RequestParam Integer age) {
System.out.println(name + ", " + age);
return "success";
}
注意:此时 name 和 age 都是必填项,如果任一参数缺失,会返回 400 错误(Bad Request)。
设置默认值和非必填参数
用 required = false 或 defaultValue 可避免报错,推荐优先用 defaultValue(更安全,类型自动转换):
立即学习“Java免费学习笔记(深入)”;
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
@RequestParam(required = false) String city:参数可不传,变量为null(引用类型)或默认值(基本类型需用包装类) -
@RequestParam(defaultValue = "beijing") String city:不传时自动设为"beijing",且required自动变为false -
@RequestParam(defaultValue = "0") int score:支持基本类型,默认值会尝试转换
参数名与变量名不一致时指定名称
URL 中参数名为 user_name,但 Java 变量想叫 username,用 name 或 value 属性指定:
@RequestParam(name = "user_name") String username
等价写法:@RequestParam("user_name") String username(value 是默认属性,可省略)。
接收多个同名参数(如复选框、多选标签)
请求如 /search?tag=java&tag=spring&tag=web,可用集合接收:
-
@RequestParam List<String> tag:自动收集全部tag值 -
@RequestParam String[] tag:接收为字符串数组 - 若加了
defaultValue,集合/数组为空时会使用该默认值(不是空集合,而是包含默认值的集合)
不复杂但容易忽略:别忘了检查空字符串和 null 的语义差异——defaultValue 在参数未提供时生效,而空字符串(?name=)会被当作实际传参,此时 defaultValue 不触发,需额外判空处理。

















