@RequestBody, @ResponseBody 注解理解
@RequestBody, @ResponseBody 注解理解
自己以前没怎么留意过,来实习后公司采用前后端分离的开发方式,前后端拿到的注释都是 json 格式的,这时候 @RequestBody, @ResponseBody 这两个注解就非常好用,下面详细介绍用法:
@RequestBody
1. 作用:
- 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定到要返回的对象上;
- 再把 HttpMessageConverter 返回的对象数据绑定到 controller 中方法的参数上。
2. 使用时机:
GET、POST方式提交时, 根据 request header Content-Type 的值来判断:
application/x-www-form-urlencoded:可选(即非必须,因为这种情况的数据 @RequestParam, @ModelAttribute 也可以处理,当然@RequestBody也能处理);multipart/form-data:不能处理(即使用@RequestBody不能处理这种格式的数据);- 其他格式:必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
PUT 方式提交时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded:必须;multipart/form-data:不能处理;- 其他格式:必须;
3. 举个例子:
也就是说,如果是 json 格式的数据,我们要传入的参数是一个对象,那就必须使用 @RequestBody。
@RequestMapping(value = "/test", Method = RequestMethod.POST, produces = "application/json;charset="UTF-8")
@ResponseBody
public JSONObject class Test(@RequestBody Test test) {
String name = test.getName();
// 将 name 回显
Map<String, Object> map = new HashMap<>();
map.put("name", name);
JSONObject obj = JSONObject.fromObject(map);
return obj;
}
@ResponseBody
1. 作用:
该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的body 数据区。
2. 使用时机:
返回的数据不是 html 标签的页面,而是其他某种格式的数据时(如 json、xml 等)使用。
3. 举个例子:
@RequestMapping(value = "/test", Method = RequestMethod.POST, produces = "application/json;charset="UTF-8")
@ResponseBody
public JSONObject class Test() {
JSONObject obj = new JSONObject;
obj.put("test", 1);
// 将 obj 回显
return obj;
}
参考:
https://blog.csdn.net/walkerJong/article/details/7520896
完。
@RequestBody, @ResponseBody 注解理解的更多相关文章
- @RequestBody, @ResponseBody 注解详解(转)
原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...
- @RequestBody, @ResponseBody 注解详解
简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...
- springMVC(二): @RequestBody @ResponseBody 注解实现分析
一.继承结构 @RequestBody.@ResponseBody的处理器:RequestResponseBodyMethodProcessor @ModelAttribute处理器: ModelAt ...
- @RequestBody 和@ResponseBody 注解详解
简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...
- @ResponseBody注解和@RequestBody注解
@ResponseBody:表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用, 在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Res ...
- 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案
我在使用SpringMVC的@RequestBody和@ResponseBody注解处理JSON数据的时候,总是出现415的错误,说是不支持所提交数据格式,我在页面中使用了JQuery的AJAX来发出 ...
- @RequestBody、@ResponseBody注解是如何将输入输出转换成json的
@RequestBody.@ResponseBody注解,可以直接将输入解析成Json.将输出解析成Json,但HTTP 请求和响应是基于文本的,意味着浏览器和服务器通过交换原始文本进行通信,而这里其 ...
- 《转载》Spring MVC之@RequestBody, @ResponseBody 详解
引言: 接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody.@ResponseBody的具体用法和使用时机: 简介: @RequestBody 作 ...
- @ResponseBody注解与JSON
MappingJacksonHttpMessageConverter 调用了 objectMapper.writeValue(OutputStream stream, Object)方法,使用@Res ...
随机推荐
- mybatis 操作其他数据库的数据表
配置文件里面配置的数据库只是默认数据库,并不是只能操作默认数据库.(被自己蠢死了,唉) 1. 注解方式 使用BaseMapper方式操作数据表时,在表对应的实体类上的 @table 注解描述表名时加上 ...
- Flume-事务与传输流程
一.Flume 事务 流程图 Put 事务流程 doPut:将批数据先写入临时缓冲区 putList doCommit:检查 channel 内存队列是否足够合并 doRollback:channel ...
- [MySql]MySql中外键设置 以及Java/MyBatis程序对存在外键关联无法删除的规避
在MySql设定两张表,其中product表的主键设定成orderTb表的外键,具体如下: 产品表: create table product(id INT(11) PRIMARY KEY,name ...
- div固定在浏览器的最上方,不随滚动条滚动
#topDIV { position: fixed; ; ; width: 100%; height: 35px; border-bottom: 1px solid #eee; background- ...
- Scala语法04 - 其他
- JAVA 基础编程练习题6 【程序 6 求最大公约数及最小公倍数】
6 [程序 6 求最大公约数及最小公倍数] 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数. 程序分析:利用辗除法. package cskaoyan; public class csk ...
- pycharm建立django工程
1.windows上安装了python 用pycharm建立django工程,必须要连接本地的python,也就是windows上的pyhton,不能连接linux上的pyhton,否则报错:plea ...
- mysql innodb阻塞分析
http://blog.csdn.net/hw_libo/article/details/39080809
- Linux学习—mysql安装配置及远程连接
安装前准备 1.检查是否已经安装过mysql 执行命令 [root@localhost /]# rpm -qa | grep mysql 从执行结果,可以看出我们已经安装了mysql-libs-5. ...
- 关于Linux系统打开最大文件数量
今天做压力测试 客户端数据提到2000人,在这个过程中,遇到了分配socket失败的问题提示 errno:24 Too many open files查找资料后发现是Linux系统配置了打开文件的最大 ...