@RequestParam注解详解
是 Spring MVC 中最常用的注解之一,用于 从 HTTP 请求中提取查询参数(Query String)或表单数据。它主要处理 - application/x-www-form-urlencoded
复制代码类型的请求(如 GET 请求或 POST 表单提交)。
一、核心作用
参数绑定 将请求中的参数值绑定到控制器方法的参数上。
- // 示例:获取请求中的 `name` 参数
- @GetMapping("/user")
- public String getUser(@RequestParam String name) {
- return "User: " + name;
- }
复制代码
处理可选参数 通过 属性控制参数是否必须。
- @GetMapping("/search")
- public String search(@RequestParam(required = false) String keyword) {
- return keyword != null ? "Results for: " + keyword : "All items";
- }
复制代码
二、关键属性
| 属性 | 说明 | 默认值 |
|---|
| / | 指定请求参数的名称 | 方法参数名 | | 参数是否必须 | (必须) | | 参数缺失时的默认值 | 无 |
示例:
- @PostMapping("/register")
- public String register(
- @RequestParam("username") String user, // 绑定到"username"参数
- @RequestParam(name = "age", defaultValue = "18") int age, // 缺省时默认为18
- @RequestParam(required = false) String hobby // 可选参数
- ) {
- // 业务逻辑
- }
复制代码
三、使用场景
获取单个参数
- @GetMapping("/detail")
- public String detail(@RequestParam Long id) { ... }
复制代码
获取多个同名参数(如复选框)
- @PostMapping("/submit")
- public String submit(@RequestParam List<String> interests) {
- // interests 接收如 ?interests=music&interests=sports 的值
- }
复制代码
映射到 Map 对象
- @GetMapping("/filters")
- public String applyFilters(@RequestParam Map<String, String> filters) {
- // 接收所有参数,如 ?category=books&price=100
- }
复制代码
四、注意事项
参数名匹配规则
- 默认根据方法参数名匹配请求参数(需编译时开启或显式指定)。
- 若参数名未指定且编译未保留参数名,会抛出
- MissingServletRequestParameterException
复制代码 。
类型转换 Spring 自动将 String 类型的参数转为目标类型(如 ,等)。
与 区别
| 特性 | | |
|---|
| 来源 | 查询字符串() | URL 路径() | | 是否可选 | 可通过设为可选 | 通常是必须的 | | 示例 | | |
与 区别
- :处理 URL 编码数据(简单键值对)。
- :处理 JSON/XML 等复杂数据(如 POST 请求体)。
五、常见问题解决方案
参数缺失异常
- // 方案1: 设置 required=false
- @RequestParam(required = false) String param
- // 方案2: 提供默认值
- @RequestParam(defaultValue = "default") String param
复制代码
参数名冲突 显式指定参数名避免歧义:
- public String query(
- @RequestParam("from") Date startDate, // 使用"from"作为参数名
- @RequestParam("to") Date endDate
- ) { ... }
复制代码
接收数组/列表
- // 前端传参: ?ids=1,2,3 或 ?ids=1&ids=2
- public String getItems(@RequestParam List<Long> ids) { ... }
复制代码
六、最佳实践
- 简单查询:优先用处理过滤条件(如分页、排序)。
- RESTful 路径:资源标识用(如),附加参数用(如)。
- 明确命名:避免依赖编译参数名,显式声明
- @RequestParam("paramName")
复制代码 。 - 设置默认值:对分页参数等推荐使用:
- @GetMapping("/posts")
- public Page<Post> getPosts(
- @RequestParam(defaultValue = "0") int page,
- @RequestParam(defaultValue = "10") int size
- ) { ... }
复制代码
总结: 是 Spring 中处理请求参数的基石级注解,适用于大多数简单数据绑定场景。掌握其用法能高效处理 URL 编码数据,但复杂 JSON 数据应使用 。
到此这篇关于Spring MVC @RequestParam注解全解析的文章就介绍到这了,更多相关Spring MVC @RequestParam注解内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯! 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |