-
@responsebody這個注解表示你的返回值將存在responsebody中返回到前端,也就是將return返回值作為請求返回值,return的數據不會解析成返回跳轉路徑,將java對象轉為json格式的數據,前端接收后會顯示將數據到頁面,如果不加的話 返回值將會作為url的一部分,頁面會跳轉到這個url,也就是跳轉到你返回的這個路徑。
-
@ResponseBody這個注解通常使用在控制層(controller)的方法上,其作用是將方法的返回值以特定的格式寫入到response的body區域,進而將數據返回給客戶端。當方法上面沒有寫ResponseBody,底層會將方法的返回值封裝為ModelAndView對象。
-
@ResponseBody這個注解使用情景:當返回的數據不是html標簽的頁面,而是其他某種格式的數據時(如json、xml等)使用,常用在ajax異步請求中,可以通過 ajax 的“success”:fucntion(data){} data直接獲取到。
-
@ResponseBody這個注解一般是作用在方法上的,加上該注解表示該方法的返回結果直接寫到Http response Body中,在RequestMapping中 return返回值默認解析為跳轉路徑,如果你此時想讓Controller返回一個字符串或者對象到前台。
舉個栗子:下面這一段代碼的return返回值是做為json格式在前台頁面顯示,而不是把return返回值做為請求的url:
1 @RequestMapping(value="/login",method=RequestMethod.POST) 2 @ResponseBody 3 public Map<String,String> loginAct(User user,String cpacha){ 4 Map<String,String> ret = new HashMap<String,String>(); 5 if(user == null) { 6 ret.put("type","error"); 7 ret.put("msg","請填寫用戶信息!"); 8 } 9 if(cpacha==null) { 10 ret.put("type", "error"); 11 ret.put("msg","請填寫驗證碼!"); 12 } 13 if(StringUtil.isEmpty(user.getUsername())) { 14 ret.put("type","error"); 15 ret.put("msg","請填寫用戶名!"); 16 } 17 if(StringUtil.isEmpty(user.getPassword())) { 18 ret.put("type","error"); 19 ret.put("msg", "請填寫密碼!"); 20 } 21 ret.put("type", "success"); 22 ret.put("msg", "登陸成功!"); 23 return ret; 24 }
