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

 

上一篇:Spring中的注解 @RequestBody和@ResponseBody的使用和区别


下一篇:spring mvc 获取请求参数,获取返回值的解决办法