@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 解析。

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

相关推荐
SimonKing4 分钟前
【开发者必备】Spring Boot 2.7.x:WebMvcConfigurer配置手册来了(六)!
java·后端·程序员
caimo30 分钟前
Java无法访问网址出现Timeout但是浏览器和Postman可以
java·开发语言·postman
Deamon Tree39 分钟前
ElasticSearch架构和写入、更新、删除、查询的底层逻辑
java·大数据·elasticsearch·架构
北极糊的狐1 小时前
IntelliJ IDEA插件:CodeGeeX 智能助手插件
java·ide·intellij-idea
悟能不能悟1 小时前
jdk25结构化并发和虚拟线程如何配合使用?有什么最佳实践?
java·开发语言
熙客1 小时前
Java8:Lambda表达式
java·开发语言
♡喜欢做梦1 小时前
Spring Web MVC 入门秘籍:从概念到实践的快速通道(上)
前端·spring·mvc
小咕聊编程2 小时前
【含文档+PPT+源码】基于java web的篮球馆管理系统系统的设计与实现
java·开发语言
后端小张2 小时前
【JAVA 进阶】Mybatis-Plus 实战使用与最佳实践
java·spring boot·spring·spring cloud·tomcat·mybatis·mybatis plus
崎岖Qiu2 小时前
【设计模式笔记07】:迪米特法则
java·笔记·设计模式·迪米特法则