@ModelAttribute、@RequestBody、@RequestParam、@PathVariable 注解对比

整理了下接收参数的注解。

注解 绑定来源 支持类型 典型用途 备注
@ModelAttribute 请求参数自动绑定到 JavaBean(含嵌套对象) JavaBean(含集合) 表单提交(application/x-www-form-urlencoded 可用于初始化默认值
@RequestBody 请求体(JSON/XML) 任意类型(常用于对象) JSON 请求体 {"id":1,"name":"Tom"} 常与 @PostMapping@PutMapping 结合使用
@RequestParam 请求参数(Query 或 Form) 基本类型、String、数组、List ?id=1&name=Tom 适合简单参数
@PathVariable URL 路径参数 基本类型、String /user/123 → id=123 REST 风格接口

简单示例对比

@ModelAttribute

java 复制代码
@PostMapping("/register")
public String register(@ModelAttribute User user) {
    // 表单数据将自动绑定到 User 对象中
    return "userInfo";
}

@RequestBody

java 复制代码
@PostMapping("/api/user")
public ResponseEntity<?> saveUser(@RequestBody User user) {
    // JSON 请求体 {"name":"Tom","age":20}
    return ResponseEntity.ok(user);
}

@RequestParam

java 复制代码
@GetMapping("/search")
public String search(@RequestParam String keyword) {
    // /search?keyword=java
    return keyword;
}

@PathVariable

java 复制代码
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {
    return "ID: " + id;
}

注意,@RequestBody 需要使用 HttpMessageConverter(如 Jackson、FastJson)支持 JSON 解析。

恐惧与否是你的选择。-- 烟沙九洲

相关推荐
GISer_Jing14 分钟前
前端GIS篇——WebGIS、WebGL、Java后端篇
java·前端·webgl
皮皮林55116 分钟前
Spring Boot 实现微信登录,So Easy !
java
tuokuac1 小时前
springMVC中/*与/**匹配的区别
java·spring
珹洺1 小时前
Java-Spring 入门指南(十七)SpringMVC--Apipostl与RestFul实战测试
java·spring·restful
祈祷苍天赐我java之术2 小时前
Redis 有序集合解析
java·前端·windows·redis·缓存·bootstrap·html
Mr.Ja3 小时前
【LeetCode热题100】No.1——两数之和(Java)
java·算法·leetcode
编啊编程啊程3 小时前
gRPC从0到1系列【20】
java·rpc·kafka·dubbo·nio
万邦科技Lafite5 小时前
如何对接API接口?需要用到哪些软件工具?
java·前端·python·api·开放api·电商开放平台
1710orange5 小时前
java设计模式:静态代理模式
java·设计模式·代理模式
我真的是大笨蛋6 小时前
开闭原则详解(OCP)
java·设计模式·性能优化·开闭原则·设计规范