[特殊字符] Spring MVC 四大参数注解笔记
2026/6/26 4:07:44 网站建设 项目流程

一、@RequestParam(查询参数 / 表单参数)

✔ 作用

👉 从URL参数 或 form-data中取值,绑定到方法参数


✔ 适用场景

1️⃣ URL Query

GET /user/list?page=1&size=10
@RequestParam int page @RequestParam int size

2️⃣ form-data(文件上传 / 表单提交)

name=tom&age=18

✔ 特点

  • 用于“单个字段”
  • 支持默认值
  • 支持是否必填
@RequestParam(required = false, defaultValue = "0") int page

✔ 本质

👉 从request.getParameter()取值


✔ 你代码里的例子

@RequestParam MultipartFile file @RequestParam String tableName

👉 multipart/form-data 请求


二、@PathVariable(路径参数)

✔ 作用

👉 从 URL 路径中取值


✔ 示例

GET /user/1001
@GetMapping("/user/{id}") public User get(@PathVariable Long id)

✔ 特点

  • URL 结构化参数
  • REST 风格核心方式

✔ 多参数

/user/1001/order/5001
@GetMapping("/user/{uid}/order/{oid}") public String test(@PathVariable Long uid, @PathVariable Long oid)

✔ 本质

👉 从 URL path 中解析变量


三、@RequestBody(请求体 JSON)

✔ 作用

👉 把 HTTP Body 中的 JSON 转成 Java 对象


✔ 示例

前端发送

POST /user { "name": "tom", "age": 18 }

后端接收

@PostMapping("/user") public void add(@RequestBody User user)

✔ 特点

  • 只能用于 POST / PUT / PATCH
  • 解析 JSON
  • 依赖 HttpMessageConverter(Jackson)

✔ 本质

👉 JSON → Java对象(反序列化)


✔ 和 @RequestParam 区别(重点)

类型来源数据格式
@RequestParamURL / form-datakey=value
@RequestBodybodyJSON

四、@RequestHeader(请求头)

✔ 作用

👉 从 HTTP Header 中取值


✔ 示例

请求

GET /user token: abc123 user-id: 1001

后端

@GetMapping("/user") public String test(@RequestHeader String token)

✔ 常见用法

1️⃣ token 鉴权

@RequestHeader("Authorization") String token

2️⃣ 自定义 header

@RequestHeader("user-id") Long userId

✔ 本质

👉 从request.getHeader()取值


五、四者对比(核心总结表)

注解数据来源数据格式使用场景
@RequestParamURL / form-datakey=value普通参数、分页、上传
@PathVariableURL路径/{id}REST资源定位
@RequestBody请求体bodyJSON复杂对象提交
@RequestHeader请求头headertoken / 鉴权 / trace

六、真实工程判断逻辑(非常重要)

看到一个接口,你要这样判断:


✔ 1. 有没有{}

/user/1001

👉 一定是 @PathVariable


✔ 2. 有没有 JSON body

{ "name": "tom" }

👉 一定是 @RequestBody


✔ 3. 有没有 ?xxx=xxx

?page=1

👉 @RequestParam


✔ 4. 有没有 header

token: xxx

👉 @RequestHeader


七、一句话总结

  • @RequestParam→ 参数
  • @PathVariable→ 路径
  • @RequestBody→ JSON
  • @RequestHeader→ 请求头

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询