成功請求到後臺,頁面卻報錯404
阿新 • • 發佈:2019-01-25
今天在學看springboot的入門案例,看完後就動手開始練手,就遇到了請求下面的問題:
前臺請求成功傳送到後面,並在後臺處理完了,但頁面卻報錯404,查了好一會資料發現:
原因是controller忘記寫返回狀態碼@responsebody,spring對返回對映值時找不到對應的檢視,報錯404。
延伸:
@responsebody表示該方法的返回結果直接寫入HTTP response body中。
它的使用情況如下:
1、一般在非同步獲取資料時使用,在使用@RequestMapping後,返回值通常解析為跳轉路徑,加上@responsebody後返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。比如非同步獲取json資料,加上@responsebody後,會直接返回json資料。
2、一般是指定要response 的type。比如json 或 xml 可以直接用jackson或jaxb的包,然後就可以自動返回了,xml中也無需多的配置,就可以使用。
好處是:GET模式下,這裡使用了@PathVariable繫結輸入引數,非常適合Restful風格。因為隱藏了引數與路徑的關係,可以提升網站的安全性,靜態化頁面,降低惡意攻擊風險。
POST模式下,使用@RequestBody繫結請求物件,Spring會幫你進行協議轉換,將Json、Xml協議轉換成你需要的物件。
@ResponseBody可以標註任何物件,由Srping完成物件——協議的轉換。
壞處是:返回之前,若前端編碼格式不一致,很容易導致亂碼。