@ResponseBody注解作用和原理


  • @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     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM