@requestparam用于绑定http请求参数,支持required控制必填性、name/value指定参数别名、defaultvalue提供默认值;三者常组合使用以兼顾健壮性与灵活性。

@RequestParam 是 Spring MVC 中用于绑定 HTTP 请求参数(如 query string、form data)到控制器方法参数的注解,它能精准控制参数的必填性、别名映射和默认值逻辑。
强制参数必须传入(required = true)
默认情况下 @RequestParam 的 required 属性为 true,即该参数必须出现在请求中,否则会抛出 MissingServletRequestParameterException。适用于业务上不可缺失的关键字段。
- 写法示例:
@RequestParam String username或显式写成@RequestParam(required = true) String username - 若请求缺少该参数(如 GET /login?password=123),Spring 会直接返回 400 错误,不进入方法体
- 注意:基本类型(如
int、long)若设为 required=true,又没传值,会因类型转换失败而报NumberFormatException,建议搭配包装类型(Integer)或设 default 值
支持请求参数别名(name / value 属性)
当前端传参 key 和后端变量名不一致时,可用 name(或其别名 value)指定实际参数名。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 例如前端传
?user_name=jack,但方法参数叫username,可写:@RequestParam(name = "user_name") String username - 简写形式:
@RequestParam("user_name") String username(value 是默认属性,可省略 name=) - 这个机制也适用于下划线转驼峰等命名差异场景,无需改前端或额外做映射
提供默认值兜底(defaultValue)
设置 defaultValue 后,即使参数未传或为空字符串,也会自动注入该值,且 required 自动变为 false。
- 示例:
@RequestParam(defaultValue = "guest") String role,请求中无role时,role 值为 "guest" - 注意:defaultValue 是字符串字面量,Spring 会尝试将其转换为目标类型(如
@RequestParam(defaultValue = "10") int pageSize可行) - 若 defaultValue 无法转换(如
defaultValue = "abc"绑定到 int),启动时就报错;运行时传了非法值则抛MethodArgumentTypeMismatchException - 空字符串
""不等于“未传”,若需区分“未传”和“传了空串”,不要设 defaultValue,改用required = false+ 手动判空
组合使用常见模式
多数真实接口会同时用到三者,比如分页查询:
@RequestParam(value = "page", defaultValue = "1") Integer pageNum@RequestParam(value = "size", defaultValue = "10") Integer pageSize@RequestParam(required = true) String keyword
这样既兼容前端不传分页参数的场景,又确保搜索关键词必须提供,还避免了类型转换异常风险。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










