SpringBoot请求参数接收控制指南分享

 更新时间:2025年04月25日 14:42:00   作者:L_!!!  
这篇文章主要介绍了SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Spring Boot 请求参数接收控制指南

1. 概述

在Spring Boot项目中,我们可以通过不同的注解来接收来自HTTP请求的各种参数。

本指南将详细介绍各种参数接收方式及其使用场景。

2. 有注解时参数接收方式对比

参数类型注解位置适用HTTP方法示例
路径参数@PathVariableURL路径中GET, DELETE/users/{id}
查询参数@RequestParamURL?后GET/users?name=John
请求体@RequestBody请求体POST, PUT, PATCHJSON/XML数据
请求头@RequestHeaderHTTP头任意Authorization: Bearer token
Cookie值@CookieValueCookie头任意Cookie: JSESSIONID=xxx
表单数据@RequestParam表单体POSTapplication/x-www-form-urlencoded
文件上传@RequestParammultipart/form-dataPOST文件上传表单

3. 无注解时接收参数默认位置

Spring Boot 默认参数绑定规则(不加注解时)

请求类型参数类型默认绑定位置示例注意事项
GET基本类型/String自动绑定到URL查询参数GET /user?name=Tom → public String getUser(String name)参数名必须与URL中的key一致
POJO对象自动绑定到URL查询参数GET /user?name=Tom&age=20 → public String getUser(User user)对象的字段名需与URL参数匹配
数组/集合自动绑定到URL查询参数GET /user?ids=1,2,3 → public String getUser(List<Integer> ids)支持逗号分隔或同名参数(ids=1&ids=2)
POST基本类型/String表单数据 (Form Data)POST /user (Content-Type: application/x-www-form-urlencoded)需设置Content-Type为表单类型
POJO对象表单数据或JSON请求体若为application/json → 绑定到请求体;若为表单 → 按字段名匹配需明确指定Content-Type,否则可能解析失败
数组/集合表单数据或JSON请求体同POJO规则表单格式需用同名参数(names=Tom&names=Jerry)
MultipartFile文件上传 (multipart)POST /upload (enctype="multipart/form-data")必须设置enctype="multipart/form-data"
PUT/PATCH所有类型JSON/XML请求体PUT /user { "name": "Tom" } → public String updateUser(User user)默认按@RequestBody处理,需显式加注解才能覆盖
DELETE基本类型/StringURL查询参数DELETE /user?id=123 → public String deleteUser(Long id)与GET相同
POJO对象不支持-DELETE通常只用路径参数或简单查询参数

关键规则总结

GET/DELETE 请求

  • 参数默认绑定到 URL查询字符串?key=value)。
  • POJO对象会按字段名自动拆解到查询参数。

POST 请求

  • 默认按 表单数据application/x-www-form-urlencoded)解析。
  • 若请求头为 Content-Type: application/json,则需显式加 @RequestBody,否则绑定失败。

PUT/PATCH 请求

  • 默认按请求体(JSON/XML)处理,类似@RequestBody行为,但实际开发中建议显式加注解。

特殊类型

  • MultipartFile:仅在 multipart/form-data 类型的POST中自动绑定。
  • 数组/集合:支持URL查询参数(GET)或表单同名参数(POST)。

常见误区澄清

表单数据不会放在请求头

  • 请求头仅用于元数据(如Content-TypeAuthorization等),表单内容一定在请求体。

GET请求能否带表单数据?

  • ❌ 不能。GET请求的参数只能通过URL查询字符串(?key=value)传递,且长度受限。

不加注解时Spring Boot如何绑定表单数据?

  • 默认按参数名匹配请求体中的表单字段(需参数名与表单字段名一致)。

POST JSON vs 表单数据

  • JSON数据必须显式使用@RequestBody,而表单数据默认绑定(无需注解)。

4.HTTP请求参数位置自定义控制对照表

参数位置Spring Boot注解手动提取方式适用场景示例请求
URL路径参数@PathVariableHttpServletRequest.getRequestURI()RESTful资源标识GET /users/123 → id=123
URL查询参数@RequestParamrequest.getParameter("name")过滤条件、分页GET /users?name=Tom → name=Tom
请求头@RequestHeaderrequest.getHeader("Authorization")认证令牌、客户端信息Header: Authorization: Bearer xxx
请求体(JSON)@RequestBodyInputStream + JSON解析库复杂数据提交POST /users + {"name":"Tom"}
请求体(表单)@RequestParamrequest.getParameterMap()传统表单提交POST /login + username=Tom&password=123
请求体(文件)@RequestPartMultipartHttpServletRequest文件上传POST /upload + multipart/form-data
Cookie@CookieValuerequest.getCookies()会话管理Cookie: sessionId=abc123

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文详解Java拦截器与过滤器的使用

    一文详解Java拦截器与过滤器的使用

    这篇文章主要为大家详细介绍了Java中拦截器与过滤器的使用与区别,文中的示例代码讲解详细,对我们学习有一定参考价值,需要的可以参考一下
    2022-04-04
  • JAVA中SSM框架的搭建实现CRUD的方法

    JAVA中SSM框架的搭建实现CRUD的方法

    这篇文章主要介绍了JAVA中SSM框架的搭建实现CRUD的方法,小编把运行代码列了出来,供大家参考。
    2017-11-11
  • Java常用字符串方法小结

    Java常用字符串方法小结

    字符串变量是Java与C语言的一大不同之处。Java之中的 String 类和 Stringbuffer 类提供了大量的对字符串操作的方法。String 类适合处理较小的字符串,而Stringbuffer类适合处理大量字符串
    2017-04-04
  • Spring学习教程之AOP模块的概述

    Spring学习教程之AOP模块的概述

    AOP 从功能的角度来讲,可能看作OOP编程方式的一种补充,提供了一种不同的代码或者系统组织方式,下面这篇文章主要给大家介绍了关于Spring学习教程之AOP模块的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • IDEA编译时报常量字符串过长的解决办法

    IDEA编译时报常量字符串过长的解决办法

    本文主要介绍了IDEA编译时报常量字符串过长的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java如何自定义注解

    java如何自定义注解

    这篇文章主要介绍了java如何自定义注解问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • SpringBoot集成RocketMQ事务消息的完整指南

    SpringBoot集成RocketMQ事务消息的完整指南

    事务消息是 RocketMQ 提供的一种高级消息类型,用于解决分布式场景下,本地数据库事务与消息发送之间的一致性问题,下面小编就来和大家聊聊SpringBoot集成RocketMQ事务消息的完整方法吧
    2025-10-10
  • 详解Java8中接口的默认方法和静态方法

    详解Java8中接口的默认方法和静态方法

    Java 8是Java语言的一个重要版本,其中引入了许多新特性和改进,其中一个值得关注的特性是接口的默认方法和静态方法,本文就来和大家简单讲讲吧
    2023-05-05
  • Java导出多个excel表打包到zip文件中供客户端另存为窗口下载实现方法

    Java导出多个excel表打包到zip文件中供客户端另存为窗口下载实现方法

    最近的项目有一个导出汇总数据的要求,考虑到用户软件的差异,所以要分别导出xls以及xlsx并且打包提供下载,下面这篇文章主要给大家介绍了关于Java导出多个excel表打包到zip文件中供客户端另存为窗口下载的实现方法,需要的朋友可以参考下
    2023-12-12
  • MybatisPlus处理大表查询的实现步骤

    MybatisPlus处理大表查询的实现步骤

    在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理,本文主要介绍了MybatisPlus处理大表查询的实现步骤,感兴趣的可以了解一下
    2024-08-08

最新评论