全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-18 5 分钟 ✍️ juanwangdev

Spring MVC @RequestParam注解

@RequestParam 将 HTTP 请求参数绑定到控制器方法参数。

基本用法

Java
@GetMapping("/user")
public String getUser(@RequestParam("id") Long userId) {
    return "user/detail";
}

// 参数名相同时可省略 value
@GetMapping("/search")
public String search(@RequestParam String keyword) {
    return "search/result";
}

注解属性

属性类型说明
value/nameString参数名
requiredboolean是否必填,默认 true
defaultValueString默认值

必填参数

Java
// 必填,缺少参数会抛出 MissingServletRequestParameterException
@GetMapping("/detail")
public String detail(@RequestParam Long id) {
    return "detail";
}

// 可选
@GetMapping("/list")
public String list(@RequestParam(required = false) Integer page) {
    return "list";
}

默认值

Java
@GetMapping("/list")
public String list(
    @RequestParam(defaultValue = "1") Integer page,
    @RequestParam(defaultValue = "10") Integer size) {
    return "list";
}

多值参数

Java
@GetMapping("/search")
public String search(@RequestParam List<String> keywords) {
    // URL: /search?keywords=java&keywords=spring
    return "search";
}

@GetMapping("/filter")
public String filter(@RequestParam("ids") Set<Long> ids) {
    // URL: /filter?ids=1&ids=2&ids=3
    return "filter";
}

Map 类型

Java
@GetMapping("/query")
public String query(@RequestParam Map<String, String> params) {
    params.forEach((k, v) -> System.out.println(k + "=" + v));
    return "query";
}

类型转换

Spring 自动将字符串参数转换为目标类型:

Java
@GetMapping("/date")
public String byDate(@RequestParam @DateTimeFormat("yyyy-MM-dd") Date date) {
    return "date";
}

@GetMapping("/status")
public String byStatus(@RequestParam Status status) { // 枚举自动转换
    return "status";
}

与 @PathVariable 对比

注解数据来源示例
@RequestParam查询参数/user?id=1
@PathVariable路径变量/user/1
Java
@GetMapping("/user/{id}")
public String getById(@PathVariable Long id) {
    return "user/detail";
}

@GetMapping("/user")
public String getByParam(@RequestParam Long id) {
    return "user/detail";
}

required=true 时缺少参数会抛异常,建议设置 defaultValue 或 required=false。

要点总结

  • @RequestParam 绑定查询参数到方法参数
  • required 属性控制是否必填
  • defaultValue 设置默认值避免空指针
  • 支持集合、Map 类型接收多值参数

📝 发现内容有误?点击此处直接编辑

← 上一篇 Spring MVC @RequestMapping注解
下一篇 → Spring MVC @ResponseBody注解
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库