springboot常用的请求参数的接收方式

 更新时间:2024年12月16日 15:34:08   作者:唐骁虎  
在Spring Boot中,接收请求参数的方式有多种,这篇文章主要为大家整理了9个常用的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

在Spring Boot中,接收请求参数的方式有多种,主要有以下几种方式:

1. 使用 @RequestParam 注解

@RequestParam 用于接收请求中的查询参数(query parameters)。它通常用于处理 URL 中的键值对,如 ?key=value。

示例:接收查询参数

@GetMapping("/example")
public String example(@RequestParam String name, @RequestParam int age) {
    return "Name: " + name + ", Age: " + age;
}

在这个例子中,如果 URL 是 /example?name=John&age=30,name 和 age 的值会被传递给方法。

参数类型转换:Spring 会自动进行参数类型的转换。如果类型不匹配(例如将字符串转为整数失败),会抛出异常。

默认值:可以设置默认值,当请求中没有对应参数时会使用默认值。

@GetMapping("/example")
public String example(@RequestParam(defaultValue = "John") String name) {
    return "Name: " + name;
}

2. 使用 @PathVariable 注解

@PathVariable 用于接收路径中的参数,通常用于 RESTful 风格的 URL。

示例:接收 URL 中的路径参数

@GetMapping("/user/{id}")
public String getUser(@PathVariable String id) {
    return "User ID: " + id;
}

例如,当请求路径为 /user/123 时,id 参数会接收到 123。

3. 使用 @RequestBody 注解

@RequestBody 用于接收请求体中的数据,通常用于 POST 请求或 PUT 请求。它可以将请求体的数据反序列化成指定的 Java 对象(如 JSON、XML 等)。

示例:接收 JSON 格式的请求体

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

假设发送的请求体是:

{
    "name": "John",
    "age": 30
}

@RequestBody 会将请求体的 JSON 数据转换为 User 对象。

4. 使用 @ModelAttribute 注解

@ModelAttribute 用于将请求参数绑定到方法参数的 JavaBean 中。它常用于表单提交或使用 GET 请求传递的数据。

示例:表单数据绑定到 Java 对象

@PostMapping("/submitForm")
public String submitForm(@ModelAttribute User user) {
    return "Form submitted by: " + user.getName();
}

假设 HTML 表单提交的数据为:

<form action="/submitForm" method="post">
    <input type="text" name="name" />
    <input type="number" name="age" />
</form>

注意:@ModelAttribute 会将请求中的所有参数与 Java 对象的字段进行匹配。

5. 使用 @RequestHeader 注解

@RequestHeader 用于获取请求头中的数据。可以通过此注解获取 HTTP 请求头的某些信息。

示例:接收请求头

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

假设请求头中包含 User-Agent 字段,@RequestHeader 会将其值传递给 userAgent 变量。

6. 使用 @CookieValue 注解

@CookieValue 用于获取请求中的 cookie 值。

示例:接收请求中的 cookie

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

假设请求中包含名为 JSESSIONID 的 cookie,@CookieValue 会将其值传递给 sessionId。

7. 使用 @RequestParam 的集合类型

@RequestParam 也支持接收数组或集合类型的参数。

示例:接收多个相同名称的参数

@GetMapping("/items")
public String getItems(@RequestParam List<String> items) {
    return "Items: " + items;
}

例如请求 /items?items=apple&items=banana&items=cherry,items 将接收到 ["apple", "banana", "cherry"]。

8. 使用 @RequestPart 注解

@RequestPart 用于处理上传的文件或多部分表单数据(multipart/form-data)。它用于从请求中提取文件或其他部分的数据。

示例:接收文件和其他表单字段

@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file, @RequestPart("description") String description) {
    return "File uploaded: " + file.getOriginalFilename() + ", Description: " + description;
}

这里,file 是通过 @RequestPart 注解接收的文件,而 description 是接收到的其他字段。

9. 使用 @RequestMapping 注解的 params 属性

可以在 @RequestMapping 中使用 params 属性来限制方法仅在满足特定查询参数时才会被调用。

示例:请求必须包含特定参数才能执行

@RequestMapping(value = "/search", params = "query")
public String search(@RequestParam String query) {
    return "Search query: " + query;
}

只有当请求路径为 /search?query=value 时,才会匹配到这个方法。

总结

  • @RequestParam:用于查询参数。
  • @PathVariable:用于路径参数。
  • @RequestBody:用于请求体,常用于接收 JSON、XML 等格式的数据。
  • @ModelAttribute:用于将请求参数绑定到 JavaBean 中。
  • @RequestHeader:用于接收请求头数据。
  • @CookieValue:用于接收 Cookie 值。
  • @RequestPart:用于处理上传的文件和表单字段。
  • 集合类型的 @RequestParam:用于接收多个相同名称的参数。
  • @RequestMapping params 属性:用于限制特定查询参数的接收。

这些方式可以根据不同的需求选择使用,灵活地处理 Spring Boot 中的请求参数。

以上就是springboot常用的请求参数的接收方式的详细内容,更多关于springboot请求参数接收方式的资料请关注脚本之家其它相关文章!

相关文章

  • Java封装Redis非阻塞分布式锁彻底解决表单重复提交主键冲突问题

    Java封装Redis非阻塞分布式锁彻底解决表单重复提交主键冲突问题

    本文基于原生RedisTemplate封装通用非阻塞分布式锁工具类,实现锁逻辑与业务逻辑解耦,兼顾易用性与安全性,同时解决锁与事务配合、锁释放时机、失败重试等核心坑点,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • 轻松掌握java外观模式

    轻松掌握java外观模式

    这篇文章主要帮助大家轻松掌握java外观模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • IDEA常用插件之类Jar包搜索Maven Search解读

    IDEA常用插件之类Jar包搜索Maven Search解读

    文章介绍了IDEA常用插件MavenSearch的使用方法,该插件可以帮助用户快速查找和浏览Maven中央存储库中可用的依赖项和插件,方便用户管理项目依赖项
    2025-01-01
  • SpringBoot集成Mybatis实现对多数据源访问原理

    SpringBoot集成Mybatis实现对多数据源访问原理

    本文主要分析讨论在SpringBoot应用中我们该如何配置SqlSessionFactoryBean对象,进而实现对多个不同的数据源的操纵,文章通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • java处理按钮点击事件的方法

    java处理按钮点击事件的方法

    下面小编就为大家带来一篇java处理按钮点击事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • idea引入外部jar包的方法实现

    idea引入外部jar包的方法实现

    本文主要介绍了idea引入外部jar包的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 关于Spring中@Transactional事务回滚的注意事项

    关于Spring中@Transactional事务回滚的注意事项

    这篇文章主要介绍了关于Spring中@Transactional事务回滚的注意事项,回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型,需要的朋友可以参考下
    2023-05-05
  • Spring Boot实现数据访问计数器方案详解

    Spring Boot实现数据访问计数器方案详解

    在Spring Boot项目中,有时需要数据访问计数器,怎么实现数据访问计数器呢?下面小编给大家带来了Spring Boot数据访问计数器的实现方案,需要的朋友参考下吧
    2021-08-08
  • mybatis的插件机制示例详解

    mybatis的插件机制示例详解

    这篇文章主要给大家介绍了关于mybatis插件机制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • SpringAI+Ollama本地模型实现快速对话的实战指南

    SpringAI+Ollama本地模型实现快速对话的实战指南

    SpringAI是Spring官方推出的AI应用开发框架,旨在统一封装多种大模型,提供一套代码无缝切换不同模型的功能,下面我们就来看看SpringAI如何结合Ollama实现快速对话功能吧
    2026-05-05

最新评论