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

 更新时间:2025年07月26日 10:42:04   作者:Full Stack Developme  
Spring Boot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、Cookie等类型,还可绑定到对象或使用Servlet API,需注意参数匹配规则及配置支持隐藏方法过滤器,本文介绍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

  • 大多数注解都有 required 和 defaultValue 属性可以配置
  • 对于复杂嵌套对象,SpringBoot 也能自动绑定
  • 参数名称默认会与方法参数名匹配,除非在注解中指定
  • 可以通过配置 spring.mvc.hiddenmethod.filter.enabled=true 来支持 PUT/DELETE 等方法的表单提交

到此这篇关于SpringBoot 获取请求参数的常用注解的文章就介绍到这了,更多相关SpringBoot 请求参数注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • dom4j读取XML文件详解

    dom4j读取XML文件详解

    这篇文章主要为大家详细介绍了dom4j读取XML文件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Activiti开发环境的配置

    Activiti开发环境的配置

    本篇文章主要内容介绍了Activiti开发环境的配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Spring 定时任务@Scheduled 注解四大参数用法解析

    Spring 定时任务@Scheduled 注解四大参数用法解析

    本文详细介绍了Spring框架中使用@Scheduled注解实现定时任务的方法,重点讲解了fixedRate、fixedDelay、cron和initialDelay这四个参数的用法,并通过实例代码进行了详细说明,感兴趣的朋友一起看看吧
    2025-01-01
  • java内部类的定义与分类示例详解

    java内部类的定义与分类示例详解

    这篇文章主要给大家介绍了关于java内部类的定义与分类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java线程池ThreadPoolExecutor的使用及其原理详细解读

    Java线程池ThreadPoolExecutor的使用及其原理详细解读

    这篇文章主要介绍了Java线程池ThreadPoolExecutor的使用及其原理详细解读,线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务,线程池线程都是后台线程,需要的朋友可以参考下
    2023-12-12
  • IDEA2020.1构建Spring5.2.x源码的方法

    IDEA2020.1构建Spring5.2.x源码的方法

    这篇文章主要介绍了IDEA2020.1构建Spring5.2.x源码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Logback动态修改日志级别的方法

    Logback动态修改日志级别的方法

    这篇文章主要介绍了Logback动态修改日志级别的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 深入讲解java线程与synchronized关键字

    深入讲解java线程与synchronized关键字

    Java 中多线程的同步依靠的是对象锁机制,synchronized关键字就是利用了封装对象锁来实现对共享资源的互斥访问。下面这篇文章主要介绍了java线程与synchronized关键字的相关资料,需要的朋友可以参考下。
    2017-03-03
  • Java中的泛型详细解析

    Java中的泛型详细解析

    这篇文章主要介绍了Java中的泛型详细解析,泛型又称参数化类型,是JDK5.0出现的新特性,解决了数据类型的安全型问题,Java泛型可以保证如果程序在编译时没用发出警告,运行时就不会产生classCastException异常,需要的朋友可以参考下
    2024-01-01
  • Java并发编程之重入锁与读写锁

    Java并发编程之重入锁与读写锁

    这篇文章主要介绍了Java并发编程之重入锁与读写锁,文中相关实例代码详细,测试可用,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09

最新评论