Spring MVC ResponseBody

上一节小博老师跟大家一起学习了RequestBody注解的适用情况,了解了在什么情况下使用以及如何使用RequestBody注解。这一节小博老师继续给大家讲解Controller方法上的另一个注解ResponseBody。

@ResponseBody注解用于Controller方法的返回对象上,通过适当的HttpMessageConverter把返回对象转换为指定格式,然后写入到Response对象的body数据区,返回给客户端。

适用场景

适用于返回数据是json、xml等格式。如果是html页面(或者html标签),则不适合使用ResponseBody注解。

工作原理

1. 解析根据Request对象header部分的Accept属性,获取属性内的类型(以“,”隔开)

2. 根据按accept中的所有类型,遍历所有的HttpMessageConverter

3. 找到匹配的HttpMessageConverter后,调用相应方法处理返回对象

替代方案

如果返回的不是对象,而是json字符串,则不需要使用ResponseBody注解,可以直接输出到body区域,如:

response.setContentType("application/json; charset=UTF-8");

response.getWriter().print(“{\”name\”:\”boweifeng\”}”);

实例

@RequestMapping(value = "/bwf/login", method = RequestMethod.POST)  

    public  @ResponseBody Person login(@RequestBody Boweifeng bwf){

return bwf;  

}

其中Boweifeng是一个POJO类。

附录:默认的HttpMessageConverter协议转换器

Spring MVC ResponseBody

转载于:https://my.oschina.net/u/2971691/blog/801684