Spring中Responsebody註解的作用
阿新 • • 發佈:2019-02-19
好長一段時間以來都只是寫些測試程式碼,好久沒寫專案程式碼了,以至於sping那套東西日漸生疏了。最近在折騰一個小專案,寫了一個controller用來響應ajax請求,結果斷點除錯發現一直返回"404 ...not response...",折騰了快2小時,一直沒想到是註解的問題,萬般無賴之下上了度娘,方才如夢初醒,特意記錄一下,一來提醒一下自己,二來也讓跟我遇到一樣問題的朋友少受些折磨。
這個註解表示該方法的返回結果直接寫入HTTP response body中,一般在非同步獲取資料時使用。
在使用@RequestMapping後,返回值通常解析為跳轉路徑。加上@responsebody後,返回結果直接寫入HTTP response body中,不會被解析為跳轉路徑。比如非同步請求,希望響應的結果是json資料,那麼加上@responsebody後,就會直接返回json資料。
@RequestMapping(value="/publish" ,produces="application/json;charset=UTF-8") public Object publish()throws Exception{ Map<String,String> map = new HashMap<String,String>(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); 。。。 map.put("result", "success"); return AppUtil.returnObject(new PageData(), map); }
例如,在我用來響應ajax請求的上述方法中,因為沒加@responsebody, responseCode一直是404。後來像下面這樣加上後, responseCode就是200了,一切正常了。
@RequestMapping(value="/publish" ,produces="application/json;charset=UTF-8") @ResponseBody public Object publish()throws Exception{ Map<String,String> map = new HashMap<String,String>(); ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); 。。。 map.put("result", "success"); return AppUtil.returnObject(new PageData(), map); }