@Controller注解
是Spring框架提供的注解,代表控制类(控制层/表现层)。@controller只是定义了一个控制器类,常配合@RequestMapping和@ResponseBody使用。使用@Controller返回的是前端页面,可以直接通过String跳转到jsp,html等页面(可以在视图配置控制器里配置)。
如果使用String返回的页面找不到,或者没有该页面,在访问地址之后汇报404的错误。
而如果想返回“hello.html”字符串的话,加上@ResponseBody就可以了。
@RestController注解
是spring4.0版新增的注解,@RestController=@Controller+@ResponseBody。支持RESTful访问方式,返回结果都是json字符串。
(这里使用@RestController代替了@Controller和@ResponseBody)也就是说return “hello!”,那页面返回的就是 hello!字符串。
如果需要跳转,那么返回的类型就必须是View或者ModelAndView。创建一个View或者ModelAndView的对象,然后放入一个视图(页面),接着再返回这个对象。
总结:
@RestController = @Controller + @ResponseBody
@Controller:通过String返回的是视图页面。
@ResponseBody:返回的是数据。
@RestController:返回的是json对象。也可以返回页面,但是要通过View和ModelAndView。
如果使用@Controller既要返回页面,也要返回数据,那就要加上@ResponseBody一起使用。