[特殊字符] Spring MVC 四大参数注解笔记
一、RequestParam查询参数 / 表单参数✔ 作用 从URL参数 或 form-data中取值绑定到方法参数✔ 适用场景1️⃣ URL QueryGET /user/list?page1size10RequestParam int page RequestParam int size2️⃣ form-data文件上传 / 表单提交nametomage18✔ 特点用于“单个字段”支持默认值支持是否必填RequestParam(required false, defaultValue 0) int page✔ 本质 从request.getParameter()取值✔ 你代码里的例子RequestParam MultipartFile file RequestParam String tableName multipart/form-data 请求二、PathVariable路径参数✔ 作用 从 URL 路径中取值✔ 示例GET /user/1001GetMapping(/user/{id}) public User get(PathVariable Long id)✔ 特点URL 结构化参数REST 风格核心方式✔ 多参数/user/1001/order/5001GetMapping(/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依赖 HttpMessageConverterJackson✔ 本质 JSON → Java对象反序列化✔ 和 RequestParam 区别重点类型来源数据格式RequestParamURL / form-datakeyvalueRequestBodybodyJSON四、RequestHeader请求头✔ 作用 从 HTTP Header 中取值✔ 示例请求GET /user token: abc123 user-id: 1001后端GetMapping(/user) public String test(RequestHeader String token)✔ 常见用法1️⃣ token 鉴权RequestHeader(Authorization) String token2️⃣ 自定义 headerRequestHeader(user-id) Long userId✔ 本质 从request.getHeader()取值五、四者对比核心总结表注解数据来源数据格式使用场景RequestParamURL / form-datakeyvalue普通参数、分页、上传PathVariableURL路径/{id}REST资源定位RequestBody请求体bodyJSON复杂对象提交RequestHeader请求头headertoken / 鉴权 / trace六、真实工程判断逻辑非常重要看到一个接口你要这样判断✔ 1. 有没有{}/user/1001 一定是 PathVariable✔ 2. 有没有 JSON body{ name: tom } 一定是 RequestBody✔ 3. 有没有 ?xxxxxx?page1 RequestParam✔ 4. 有没有 headertoken: xxx RequestHeader七、一句话总结RequestParam→ 参数PathVariable→ 路径RequestBody→ JSONRequestHeader→ 请求头