@ResponseBody注解

作用

  @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注解中文乱码的问题解决


下一篇:@ResponseBody注解和@RequestBody注解