今天面试的时候面试官问了一个问题:SpringMVC如何区分控制器返回的是页面还是数据(比如JSON格式的数据)?一时没想起来怎么回答,回来看了一下自己的代码,原来就是一直在写的@ResponseBody注解!回来总结一下。
1.@ResponseBody注解作用
该注解用于将Controller方法返回的对象,通过适当的HttpMessageConverter转化为指定格式后,写入到Response对象的body数据区。
使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json,xml等)。
2.实例
@Controller
@RequestMapping("/user")
public class UserController {
/**
* 返回login登陆页面
* */
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(HttpServletRequest request){
return "login";
}
/**
* 返回"loginSuccess"字符串
* */
@RequestMapping(value="/loginSuccess",method=RequestMethod.GET)
@ResponseBody
public String loginSuccess(HttpServletRequest request){
return "loginSuccess";
}
/**
* 返回"loginError"字符串
* */
@RequestMapping(value="/loginError",method=RequestMethod.GET)
public @ResponseBody String loginError(HttpServletRequest request){
return "loginError";
}
}
上面的代码中:
login方法返回login登陆页面
loginSuccess方法返回字符串"loginSuccess"
loginError方法返回字符串"loginError"
三个方法的返回对象都是String类型的,SpringMVC框架是如何区分返回的是页面还是字符串呢?这就是@ResponseBody注解的作用了。
PS:自己经验尚浅,上述如有问题,请各位指教!感谢!!!