由于Spring Boot 内嵌了 Tomcat 容器,所以不用把项目打成war包,再放到Tomcat中去运行。但是随之出现了个问题,基于Tomcat的Web应用都有一个/webapp
目录来存放前端页面和静态资源等文件。那么Spring Boot中应该放在哪里呢?
目录/resources
代替了webapp
如果你是用Spring Initializr新建的项目的话,那么当你打开项目,就会看到:
对,/resources
目录下已经存在了两个包:
/static
用来存放静态文件
/templates
用来存放前端页面
Ps:没有目录的话可以自己创建
编写hello.html
我们写一个最简单的HTML页面,放在/templates
下:
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello World</title>
</head>
<body>
Hi!!!!!!!!!!!!!!!!!!!
</body>
</html>
可能你注意到了,在<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
中多了点东西,没关系,继续往下看。
编写Controller返回hello.html
我们写一个Spring MVC中最简单的Controller,用来返回hello.html:
@Controller
public class IndexController {
@RequestMapping("/hello")
public String hello(){
System.out.println("Hello!!!");
return "hello";
}
}
然后通过Postman来测试一下接口:
可以看到报错了,错误提示说,可能是没有指定视图。
我们知道在传统的Tomcat Web应用里面,还需要配置web.xml与SpringMVC。
不过也太麻烦啦,所以Spring Boot就简化了这些配置,并且推荐使用Thymeleaf前端模板引擎。
前面提到的多了点东西也就是这个引擎的语法。
引入Thymeleaf依赖
我用Gradle做依赖管理:
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: '1.5.4.RELEASE'
配置application.properties
# 模板配置
# 这个开发配置为false,避免改了模板还要重启服务器
spring.thymeleaf.cache=false
# 这个是配置模板路径的,默认就是templates,可不用配置
spring.thymeleaf.prefix=classpath:/templates/
# 这个可以不配置,检查模板位置
spring.thymeleaf.check-template-location=true
# 下面3个不做解释了,可以不配置
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
# 模板的模式
spring.thymeleaf.mode=HTML5
继续测试接口
可以看到返回的就是hello.html
Thymeleaf语法也是个坑,有时间再去看看吧~