1. 程式人生 > >Spring中Responsebody註解的作用

Spring中Responsebody註解的作用

好長一段時間以來都只是寫些測試程式碼,好久沒寫專案程式碼了,以至於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);
		}