@requestparam用于绑定url查询参数,默认需存在,设defaultvalue和required=false可避免400错误;空字符串不触发默认值;支持数组/list接收多值,defaultvalue仅对参数整体缺失生效。

在 Java 的 Spring MVC 中,@RequestParam 用于从 HTTP 请求的查询参数(即 URL 中 ?key=value 部分)绑定数据到控制器方法的参数上。设置默认值可以避免参数为空时抛出异常,也提升接口健壮性。
基本用法:接收单个查询参数
直接在方法参数上加 @RequestParam,Spring 会自动从 URL 查询字符串中提取同名参数:
@GetMapping("/users")
public String listUsers(@RequestParam String name) {
// URL: /users?name=zhangsan → name = "zhangsan"
}
注意:此时若 URL 中不带 name 参数,会返回 400 错误(缺少必需参数)。
设置默认值:用 defaultValue 属性
通过 defaultValue 属性指定默认值,同时建议将参数设为非必需(required = false),逻辑更清晰:
-
@RequestParam(defaultValue = "0") int page→ 若未传page,值为0 -
@RequestParam(value = "size", defaultValue = "10") int pageSize→ 参数名是size,默认值为10 -
@RequestParam(required = false, defaultValue = "active") String status→ 不传status时取"active",且不报错
处理空字符串或空白值
defaultValue 只在参数**完全缺失**时生效;如果传了空值(如 ?name= 或 ?name= ),默认值不会触发,而是交由类型转换器处理(比如空字符串转 String 就是 "",转 Integer 则报错)。如需统一处理空字符串,可结合 @InitBinder 或在方法内手动校验:
@RequestParam String keyword
之后在方法体中判断:if (keyword == null || keyword.trim().isEmpty()) keyword = "all";
接收多个同名参数:用数组或集合
当 URL 中有多个同名参数(如 ?tag=java&tag=spring&tag=web),可用数组或 List 接收:
-
@RequestParam String[] tags→ 得到["java", "spring", "web"] -
@RequestParam List<string> tags</string>→ 同样可接收多个值,无需额外配置 - 支持默认值:
@RequestParam(defaultValue = "all") List<string> tags</string>,但注意:只有整个参数缺失时才用默认值,不能对集合里的每个元素设默认值
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











