SpringMVC如何区分返回页面和返回数据?@ResponseBody注解

今天面试的时候面试官问了一个问题: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:自己经验尚浅,上述如有问题,请各位指教!感谢!!!


你可能感兴趣的:(SpringMVC)