@ResponseBody與PrintWriter(response.getWriter)理解和用法區分
阿新 • • 發佈:2019-01-01
理解:很多情況我們需要在controller接收請求然後返回一些message。
在springmvc中當返回值是String時,如果不加@ResponseBody的話,返回的字串就會找這個String對應的頁面,如果找不到會報404錯誤。
如果加上@ResponseBody註解的話,返回的就是json字串,並且把這個json字串返回給傳送請求的原頁面。
當然也有時候不加@ResponseBody註解,那麼就需要我們在controller的方法中傳入response引數,然後在方法裡面獲取response.getWriter()賦給PrintWriter。然後通過PrintWriter把這個字串以流的形式傳遞給原發送請求的頁面。
應用場景:頁面或者js非同步請求Controller,Controller不需要返回view,而只需要返回資料時,就可以使用@ResponseBody註解。@ResponseBody註解會把return 的結果放到response物件中。
只要在頁面或者js中ajax指定dataType,並且在Controller上使用@ResponseBody註解來修飾,SpringMVC就會幫我們把這個Controller返回的物件轉為json格式的。
若想返回一段小的字串到頁面上,可以在Controller中使用PrintWriter類,直接 out.print(字串),此時這個java方法不需要使用@ResponseBody註解修飾,若想用@ResponseBody註解修飾,只需要在ajax中指定dataType