@Controller是在我们要返回的内容是界面的时候用,例如下面,我们要返回的是demo.html这个文件,我们这个时候就应该使用@Controller
这个是我们的demo.html的内容(不要在意代码是不是规范的。)
而当我们访问http://localhost:8899/hello(这个是我配置的端口,我电脑上访问项目的地址)
我们可以看到,访问的内容就是我们demo.html
@RestController是我们要返回一些Json或者文本之类的,我们可以使用这个注解,请看下图
这张图里面我们用到了 @RestController,在/api内,我们让他返回的是一段简单的Json,接下来我们访问下这个界面
我们可以看到,返回的是我们写到return的那段json,如果,你认为是因为返回值的原因的话,我们在来看下面一张图
我们让他的返回值也换成demo.html,在上面,我们用@Controller时,也是返回的demo.html,只不过我们是访问到了demo.html中的内容,这回我们用@RestController,我们访问下看看结果
看,我们还是访问这个路径,他在页面上显示的是demo.html,并非是我们的demo.html的文件
这就是这两个注解的区别
如果在一个类里面,我们想即有浏览页面的,又有返回内容的,我们可以用到一个名为@ResponseBody的注解,看下图
在这个使用了@Controllerd注解的类中,我们写了一个叫做body的方法,和上面那个hello的返回值一样,接下来我们访问下这个body,看下显示的内容,是demo的文件还是demo.html这个字符串
在上图内,我们可以看到,依旧是返回的demo.html这个字符串
所以如果要整个类都返回文本或者json的话,我们可以使用@RestController注解,如果我们要访问页面和查看json的话,我们可以在@Controller注解类中,在需要返回json或文本的方法上面添加@ResponseBody的注解