@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

完。

最新文章

  1. Emgu.CV 播放视频
  2. input 栏位光标末尾闪烁
  3. 8086cpu-intel汇编指令简介
  4. powerdesinger中建立一个表后,出现Existence of index的警告
  5. 第2章 面向对象的设计原则(SOLID):5_迪米特法则
  6. java9-7 成员内部类的修饰符
  7. 选数 2002年NOIP全国联赛普及组
  8. web之困:现代web应用安全指南
  9. 关于composer
  10. HDU 5858 Hard problem
  11. Linux系统、版本、CPU、内存查看、硬盘空间
  12. Ruby On Rails 4 hello world,Ruby On Rails上手
  13. [转]解决百度ueditor插入动态地图空白 支持iframe方法
  14. Polar Code(1)极化码SC译码迭代公式的理解
  15. Item 26: 避免对universal引用进行重载
  16. 大数据小白系列——HDFS(2)
  17. 2017BUAA软工个人项目之数独生成与求解
  18. 如何在同一台服务器上部署两个tomcat
  19. 设计模式《JAVA与模式》之访问者模式
  20. PHP缓存机制详解

热门文章

  1. ARTS打卡计划第八周
  2. 预处理、const、static与sizeof-用#define实现宏并求最大值和最小值
  3. 【Eureka】Eureka 是什么
  4. ios-Realm数据库的使用
  5. Flask+uwsgi+Nginx+Ubuntu部署教程
  6. [PySpark] Spark SQL on a large file
  7. 1.ini读写操作
  8. 【转载】execute、executeUpdate、executeQuery三者的区别(及返回值)
  9. DOTS学习资源
  10. django 之(一) --- DjangoRestFormwork