SpringBoot @Controller和@RestController注解的区别
@RestController注解相当于@ResponseBody + @Controller合在一起
@ResponseBody相当于自动帮我们把返回序列化,如果在controller上用@RestController,那么这个controller里的方法都不能返回视图页面,如jsp等;如果controller上用的是@Controller,那么如果没有视图页面配合的话会报错,如下如所示:
代码如下图:
看到resources/templates下没有东西,如果加上index.html
重启项目并访问:
这里要多提一点关于SpingBoot的目录结构
原来是放在 src/main/webapp 目录下的一系列资源,现在都统一放在 src/main/resources 相应子目录下,比如:
src/main/resources/static 用于存放各类静态资源,比如 css,js 等。
src/main/resources/templates 用于存放模板文件,比如 *.vm。
当然,如果还是希望以 war 包的形式,而不是 SpringBoot 推荐使用的独立 jar 包形式发布 Web 应用,也可以继续原来 Java Web 应用的项目结构约定。
此外,SpringBoot的入口类的@SpringBootApplication注解会去扫描当前目录以及子目录的文件,所以我们的controller,pojo,service等package都要以入口类package为父目录,在它的基础上去新建controller,pojo,service等目录,否则扫描不出来的话自己写的各种controller等是不会生效的