非理性分析@ResponseBody


@ResponseBody

作用:

      该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:

      返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

@ResponseBody,可以这样理解,就是直接响应浏览器,不走逻辑视图,相当于Response对象调用了write方法往浏览器写内容,如果你返回值是一个对象的话,@ResponseBody会帮你转成json再响应浏览器。如果你返回值就是一个字符串,浏览器可以直接识别字符串,所以@ResponseBody就不加转换直接响应浏览器,这时Response headers默认的Content-Type就是text/plain  (解决一些浏览器兼容问题)

**********************************************************************************************************

这个是转载的

1、

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

  数据,需要注意的呢,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

2、  

  @RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }
  User字段:userName pwd
  那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'

  效果等同于如下代码:
  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页