以下是自己經過查詢各種文檔得出的結論,如有不對請指正。
@responseBody注解的作用是將controller的方法返回的對象通過適當的轉換器轉換為指定的格式之后,寫入到response對象的body區,通常用來返回JSON數據或者是XML數據,需要注意的呢,在使用此注解之后不會再走試圖處理器,而是直接將數據寫入到輸入流中,他的效果等同於通過response對象輸出指定格式的數據。舉個栗子:
@RequestMapping(path = "/hello", method = RequestMethod.POST)
@ResponseBody
public String helloWorld() {
return "Hello Simon"
}
上面的代碼結果是文本 Hello Simon將被寫入HTTP的響應流中。
效果等同於如下代碼:
@RequestMapping("/hello")
public void helloWorld(HttpServletResponse response){
response.getWriter.write("Hello Simon");
}
注:Spring MVC的 @ResponseBody方法是有風險的,因為它會根據客戶的請求-包括URL的路徑后綴,來渲染不同的內容類型。因此,禁用后綴模式匹配或者禁用僅為內容協商開啟的路徑文件后綴名攜帶,都是防范RFD攻擊的有效方式。
