springBoot中@Controller和@RestController的区别的小坑

     这两个的区别其实是个很简单的问题,但是对于初学者可能遇到了会掉坑里。

    @RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1、如果注解Controller使用@RestController,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

代码如图:

springBoot中@Controller和@RestController的区别的小坑

结果如图:

springBoot中@Controller和@RestController的区别的小坑

 

2、 如果需要返回到指定页面(jsp/html),则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。

代码如图:

springBoot中@Controller和@RestController的区别的小坑

结果如图:

springBoot中@Controller和@RestController的区别的小坑
    如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

代码如图:

springBoot中@Controller和@RestController的区别的小坑

结果如图:

springBoot中@Controller和@RestController的区别的小坑

有不周全之处,欢迎大神指点。