上一节小博老师跟你们一块儿学习了RequestBody注解的适用状况,了解了在什么状况下使用以及如何使用RequestBody注解。这一节小博老师继续给你们讲解Controller方法上的另外一个注解ResponseBody。html
@ResponseBody注解用于Controller方法的返回对象上,经过适当的HttpMessageConverter把返回对象转换为指定格式,而后写入到Response对象的body数据区,返回给客户端。json
适用场景app
适用于返回数据是json、xml等格式。若是是html页面(或者html标签),则不适合使用ResponseBody注解。学习
工做原理code
1. 解析根据Request对象header部分的Accept属性,获取属性内的类型(以“,”隔开)xml
2. 根据按accept中的全部类型,遍历全部的HttpMessageConverterhtm
3. 找到匹配的HttpMessageConverter后,调用相应方法处理返回对象对象
替代方案blog
若是返回的不是对象,而是json字符串,则不须要使用ResponseBody注解,能够直接输出到body区域,如:ip
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协议转换器