当前位置: 首页 > news >正文

SpringBoot 获取请求参数的常用注解

SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数

以下是主要的注解及其用法:


1. @RequestParam

用于获取查询参数(URL 参数),适用于 GET 请求或 POST 表单提交。

@GetMapping("/user")
public String getUser(@RequestParam("id") Long userId) {return "User ID: " + userId;
}// 可选参数,设置默认值
@GetMapping("/search")
public String search(@RequestParam(value = "q", required = false, defaultValue = "") String query) {return "Search: " + query;
}

2. @PathVariable

用于获取 URL 路径中的变量。

@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") Long userId) {return "User ID: " + userId;
}// 当变量名与方法参数名相同时可省略
@GetMapping("/article/{slug}")
public String getArticle(@PathVariable String slug) {return "Article: " + slug;
}

3. @RequestBody

用于获取请求体中的 JSON/XML 数据,通常用于 POST/PUT 请求。

@PostMapping("/user")
public String createUser(@RequestBody User user) {return "Created user: " + user.getName();
}

4. @RequestHeader

用于获取 HTTP 请求头中的值。

@GetMapping("/info")
public String getInfo(@RequestHeader("User-Agent") String userAgent) {return "User Agent: " + userAgent;
}

5. @CookieValue

用于获取 HTTP 请求中的 Cookie 值。

@GetMapping("/home")
public String home(@CookieValue("JSESSIONID") String sessionId) {return "Session ID: " + sessionId;
}

6. @ModelAttribute

用于绑定请求参数到模型对象,适用于表单提交。

@PostMapping("/register")
public String register(@ModelAttribute User user) {return "Registered: " + user.getName();
}

7. @RequestPart

用于处理 multipart/form-data 请求中的文件上传。

@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {return "Uploaded: " + file.getOriginalFilename();
}

8. 直接使用 Servlet API

SpringBoot 也支持直接使用 Servlet API 对象:

@GetMapping("/example")
public String example(HttpServletRequest request, HttpServletResponse response) {String param = request.getParameter("param");return "Parameter: " + param;
}

9. 获取所有参数

@RequestParam Map 获取所有查询参数

@GetMapping("/params")
public String getAllParams(@RequestParam Map<String, String> allParams) {return "All params: " + allParams.toString();
}

@RequestParam MultiValueMap 获取可能有多个值的参数

@GetMapping("/multiParams")
public String getMultiParams(@RequestParam MultiValueMap<String, String> params) {return "Multi params: " + params.toString();
}

10. 参数绑定到对象

SpringBoot 支持自动将请求参数绑定到 Java 对象:

@GetMapping("/filter")
public String filterUsers(UserFilter filter) {return "Filtering by: " + filter.toString();
}// UserFilter 类示例
public class UserFilter {private String name;private Integer age;// getters and setters
}

注意事项

请求示例:/filter?name=John&age=25

  1. 大多数注解都有 required 和 defaultValue 属性可以配置

  2. 对于复杂嵌套对象,SpringBoot 也能自动绑定

  3. 参数名称默认会与方法参数名匹配,除非在注解中指定

  4. 可以通过配置 spring.mvc.hiddenmethod.filter.enabled=true 来支持 PUT/DELETE 等方法的表单提交

http://www.dtcms.com/a/298739.html

相关文章:

  • 自由学习记录(73)
  • 地铁逃生
  • 注意力机制的使用说明01
  • RNN模型数学推导过程(笔记)
  • 散列表(哈希表)
  • SQL基础⑮ | 触发器
  • 亚德诺半导体AD8539ARZ-REEL7 超低功耗轨到轨运算放大器,自动归零技术,专为可穿戴设备设计!
  • Python 程序设计讲义(20):选择结构程序设计——双分支结构的简化表示(三元运算符)
  • 【linux】Haproxy七层代理
  • 电子基石:硬件工程师的器件手册 (八) - 栅极驱动IC:功率器件的神经中枢
  • 【自动化运维神器Ansible】Ansible常用模块之Copy模块详解
  • 程序代码篇---卡尔曼滤波与PID的组合应用
  • 2.Linux 网络配置
  • 【PyTorch】图像多分类项目部署
  • python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头
  • centOS7 yum安装新版本的cmake,cmake3以上怎么安装,一篇文章说明白
  • Java并发编程第十篇(ThreadPoolExecutor线程池组件分析)
  • 无印 v1.6 视频解析去水印工具,支持多个平台
  • Android悬浮窗导致其它应用黑屏问题解决办法
  • RocketMQ 5.3.0 ARM64 架构安装部署指南
  • J2EE模式---数据访问对象模式
  • C语言案例《猜拳游戏》
  • VSCode 报错 Error: listen EACCES: permission denied 0.0.0.0:2288
  • Java 笔记 interface
  • C#入门实战:数字计算与条件判断
  • Web攻防-业务逻辑篇密码找回重定向目标响应包检验流程跳过回显泄露验证枚举
  • 【PyTorch】图像多分类项目
  • 一些常见的网络攻击方式
  • CY5-OVA科研方向,星戈瑞荧光
  • Pytest tmp_path 实战指南:测试中的临时目录管理