@RequestBody和@RequestParam以及@ResponseBody区别

本文详细解析了@RequestParam和@RequestBody注解的区别与用法。RequestParam用于处理来自请求头的简单参数和对象,而RequestBody则针对请求体,适用于批量数据处理。

1.注解@RequestParam接收的参数是来自requestHeader中,即请求头。只能接收简单参数和对象类型。

2.注解@RequestBody接收的参数是来自requestBody中,即请求体。可以进行批量数据的处理。
在这里插入图片描述
3.注解@ResponseBody的使用在这里插入图片描述

### Spring MVC 注解详解 #### @RequestMapping 的使用场景及特点 `@RequestMapping` 是一个基础性的注解,可用于类级别方法级别。当应用于类时,它定义了一个公共的基础路径,该路径会与方法级别的路径组合形成最终访问地址[^1]。 对于具体的 HTTP 请求方式支持,虽然 `@RequestMapping` 能够接收所有的 HTTP 方法(GET, POST 等),但在实际开发中更推荐使用其衍生出来的专门用于某一种请求类型的子注解,比如 `@GetMapping`, `@PostMapping` 等,因为这些子注解具有更高的语义清晰度并能减少代码量[^2]。 ```java // 类级注解设置全局前缀 @RequestMapping("/api") public class MyController { // GET /api/resource @RequestMapping(value="/resource", method=RequestMethod.GET) public String getResource(){ return "Resource"; } } ``` #### @RequestParam @PathVariable 对比 两者都用来传递参数给控制器的方法,但是它们的工作机制有所不同: - **@RequestParam**: 主要用于获取查询字符串中的键值对形式的数据,即 URL 后面跟问号后面的部分(`?key=value`)。如果希望从表单提交或者链接后面的参数里取数据就用这个注解[^4]。 ```java // http://localhost:8080/api/user?id=123&name=testUser @GetMapping("/user") public User getUser(@RequestParam Long id, @RequestParam String name){ return userService.findUserByIdAndName(id,name); } ``` - **@PathVariable**: 则是用来捕获 URI 模板中的动态部分,也就是 URL 中的占位符 `{}` 。这种方式使得 RESTful 风格 API 更加直观易读[^5]. ```java // http://localhost:8080/api/users/123 @GetMapping("/users/{id}") public User getUserById(@PathVariable("id") long userId){ return userService.findById(userId); } ``` #### @RequestBody @ResponseBody 解析 这两个注解主要用于处理 JSON 或 XML 形式的实体内容传输: - **@RequestBody**: 接收客户端发送过来的内容体,并将其转换成 Java 对象实例化传入控制层函数内作为参数. ```java @PostMapping("/addUser") public ResponseEntity<String> addUser(@RequestBody User user){ userService.save(user); return new ResponseEntity<>("success", HttpStatus.CREATED); } ``` - **@ResponseBody**: 将返回的对象序列化为 JSON/XML 字符串响应给前端浏览器显示. 它通常配合 `@RestController` 来简化视图解析过程. ```java @RestController public class UserController{ @GetMapping("/getUserJson") public User getUserJson(){ return userService.findOne(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bst@微胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值