上一節小博老師跟你們一塊兒學習了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協議轉換器