@RequestParam 用于从 HTTP 请求的查询字符串(Query String)或表单数据(Form Data) 中提取参数,适用于如下 URL 格式:
GET /user?id=123&name=tom POST /login (表单提交 username 和 password)
与 @PathVariable 的区别
| 注解 | 参数来源 | URL 示例 |
@PathVariable |
路径占位符 | /user/123 |
@RequestParam |
查询参数或表单字段 | /user?id=123 或 POST 表单 |
基本用法
@GetMapping("/user") public String getUser(@RequestParam Integer id) { System.out.println("ID: " + id); return "success"; }
访问 /user?id=100 → 正常获取 id = 100。
常用属性
value:指定请求参数名(当与方法参数名不一致时使用)required:是否必传,默认true;设为false可选defaultValue:参数未提供时的默认值
@GetMapping("/search") public String search( @RequestParam(value = "keyword", required = false, defaultValue = "未知") String kw ) { System.out.println("搜索关键词:" + kw); return "success"; }
接收表单数据(POST)
对于少量字段,可直接用 @RequestParam:
@PostMapping("/form1") public String login( @RequestParam String username, @RequestParam String password ) { // 处理登录 }
但字段较多时,推荐封装为实体类:
public class User { private String username; private String password; // getter / setter }
@PostMapping("/form2") public String register(User user) { // 自动绑定同名参数 System.out.println(user.getUsername()); return "success"; }
✅ 注意:使用实体接收时,不要加
@RequestParam,Spring Boot 会自动将请求参数映射到对象属性。
小结
@RequestParam用于获取?key=value或表单参数;- 支持设置默认值、可选参数;
- 字段少可用注解逐个接收,字段多应使用实体类自动绑定;
- 与
@PathVariable用途不同,勿混淆。
这是处理传统 Web 表单和查询接口的常用方式。