作用

  @ResponseBody注解表示该方法的返回结果直接写入HTTP response body中

原理

  在使用此注解之后跳过视图处理器,将返回的对象通过适当的转换器转换为指定的格式之后,直接将数据写入到输出流中。

  它的效果等同于通过response对象输出指定格式的数据:response.getWriter().write(jsonArray.toString());

  “通过适当的转换器转换为指定的格式”,即:调用适合HttpMessageConverter的Adapter转换对象

  HttpMessageConverter 接口,需要开启 <mvc:annotation-driven /> ,这个默认配置中,AnnotationMethodHandlerAdapter 将会初始化7个转换器:

    ByteArrayHttpMessageConverter
    StringHttpMessageConverter
    ResourceHttpMessageConverter
    SourceHttpMessageConverter
    XmlAwareFormHttpMessageConverter
    Jaxb2RootElementHttpMessageConverter
    MappingJacksonHttpMessageConverter

用途

  通常用来返回JSON数据或者是XML数据

  1、一般在异步获取数据时使用
  2、觉得也可以用在提供接口上,实现前后端分离,在其他地方(比如手机的混合APP中)直接调用后端数据,返回json

  @ResponseBody必须要有返回对象,(序列化一个返回对象然后注入解释)可以在配置文件中指定注解的对象,可以是json/html/xml等

和RequestBody 比较

  Spring 3.X系列增加了新注解 @ResponseBody , @RequestBody
  @RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。
  @ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。

@ResponseBody注解的更多相关文章

  1. @RequestBody, @ResponseBody 注解详解

    简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...

  2. @responseBody注解的使用

    1. @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML 数 ...

  3. SpringMVC使用@ResponseBody注解返回中文字符串乱码的问题

    先说一下我的经历,以及解决问题的而过程. 在使用SpringMVC的时候,最开始的时候在配置文件中使用<mvc:annotation-driven />去自动注册DefaultAnnota ...

  4. @ResponseBody注解与JSON

    MappingJacksonHttpMessageConverter 调用了 objectMapper.writeValue(OutputStream stream, Object)方法,使用@Res ...

  5. 在什么情况下使用@ResponseBody 注解?

    @Controller @RequestMapping("/") public class HelloController { @RequestMapping(value = &q ...

  6. 关于responseBody注解中文乱码的问题解决

    在web.xml中定义字符集过滤器: <filter> <filter-name>SpringEncodingFilter</filter-name> <fi ...

  7. 解决@ResponseBody注解返回的json中文乱码问题

    1. 简介 主要解决@ResponseBody注解返回的json中文乱码问题. 2.解决方案 2.1mvc加上注解(推荐此方法) 在mvc配置文件中假如下面配置(写在 <mvc:annotati ...

  8. @ResponseBody注解和@RequestBody注解

    @ResponseBody:表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用, 在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Res ...

  9. @RequestBody, @ResponseBody 注解详解(转)

    原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...

随机推荐

  1. 2018湘潭邀请赛C题(主席树+二分)

    题目地址:https://www.icpc.camp/contests/6CP5W4knRaIRgU 比赛的时候知道这题是用主席树+二分,可是当时没有学主席树,就连有模板都不敢套,因为代码实在是太长了 ...

  2. pycharm设置pytest运行程序

  3. semantic-ui 下拉框

    注意:在使用semantic的下拉框的时候,不仅需要引入semantic.css,还要引入semantic.js,最重要的是引入jquery.否则下拉效果不会显示. 并且,jquery必须先于sema ...

  4. 09-babel

    这个是解析我们es6的代码的,为什么要用它呢,因为对于一些ie浏览器,甚至FF浏览器,低版本的还不能识别我们的es6代码,那么vue里面好多还让我们去写es6的代码,这个时候我们就可以用babel这个 ...

  5. PhpStorm 头部注释、类注释和函数注释的设置

    *设置位置:"Settings"->"file templates"; 如下图,设置头部注释.类注释以及函数注释,时间.用户名.文件名称等随机改变的属性, ...

  6. C# Note1:深入浅出WPF-MVVM篇

    一.资源说明 (1)配套视频:深入浅出WPF  讲的不错! 待更!

  7. zepto的extend

    类型判断 var class2type = {},toString = class2type.toString,$={}; //判断类型 function type(obj) { return obj ...

  8. 建议1---理解Pythonic的概念

    对于Pythonic的概念,众人都有自己的看法,但大家心中都认同一个更具体的指南,即Tim Peters的<The Zen of Python>.在这一篇充满禅意的诗篇中,有几点非常深入人 ...

  9. Mysql如何快速插入100万条记录?

    1.java程序拼接insert带多个value,使一次提交多个值. 2.插入数据之前先删除索引(注意主键不能删除),然后插入数据,最后重建索引 3.可以设置手动commit,用来提高效率 4.使用批 ...

  10. macOS & USB stick

    macOS & USB stick why macOS can only read USB stick, can not write files to USB stick macos 无法写文 ...