上一节小博老师跟大家一起学习了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协议转换器