注解RequestMapping中produces屬性可以設置返回數據的類型以及編碼,可以是json或者xml:
-
@RequestMapping(value="/xxx",produces = {"application/json;charset=UTF-8"})
-
或
-
@RequestMapping(value="/xxx",produces = {"application/xml;charset=UTF-8"})
但是必須要和@ResponseBody
注解一起使用才可以,不加@ResponseBody
注解相當於按照和返回String同名jsp頁面解析自然就會報錯。如果返過來,不加produces屬性,只有@ResponseBody注解的話也是沒有問題的,只是在瀏覽器中直接訪問的時候有區別:
情況一:
-
@RequestMapping(value="/xxx",produces = {"application/json;charset=UTF-8"})
-
@ResponseBody
情況二:
-
@RequestMapping(value="/xxx")
-
@ResponseBody
區別很明顯,第一種顯示比較好看,當然這種接口不是這樣用的,在調試階段比較適合。
如果是xml格式也是瀏覽器顯示有區別:
-
@RequestMapping(value="/xxx",produces = {"application/xml;charset=UTF-8"})
-
@ResponseBody
如果不加produces瀏覽器會把標簽解析:
-
@RequestMapping(value="/xxx")
-
@ResponseBody
總的來說produces有兩個好處:一個是瀏覽器查看方便(json自動格式化,帶搜索),另一個可以防止中文亂碼。