Spring Boot实战:从0开始动手搭建企业级项目
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

8.3 Spring Boot之Thymeleaf整合

这一节主要介绍Thymeleaf的整合过程和注意事项,并通过一个实践案例进行讲解。

8.3.1 引入Thymeleaf依赖

因为Spring Boot官方提供了Thymeleaf的场景启动器spring-boot-starter-thymeleaf,因此可以直接在pom.xml文件中添加该场景启动器,最终的pom.xml文件代码如下所示:

8.3.2 创建模板文件

在resources/templates目录下新建模板文件thymeleaf.html。Thymeleaf模板引擎的默认后缀名即为.html。在新增文件后,首先在模板文件的标签中导入Thymeleaf的名称空间:

导入该名称空间主要是为了Thymeleaf语法的提示和Thymeleaf标签的使用。接下来在模板中增加与JSP中相同的显示内容,最终的模板文件代码如下所示:

9.3.3 编辑Controller代码

在controller包下新增ThymeleafController.java文件,将模板文件所需的description字段赋值并转发至模板文件,代码如下所示:

最终的代码目录结构如图8-4所示。

图8-4 Thymeleaf整合完成后的目录结构

在项目启动成功后,打开浏览器并输入本地域名和端口号,访问如下地址:

首先可以看到在原来静态html标签中的内容已经替换为“springboot-thymeleaf”字符串,而不再是默认内容,页面效果如图8-5所示。

图8-5 Thymeleaf模板引擎渲染结果1

然后把description参数值传给后端处理方法,将模板中的字段改为“我是十三”,页面效果如图8-6所示。

图8-6 Thymeleaf模板引擎渲染结果2

8.3.4 Thymeleaf模板引擎使用注意事项

1. 模板引擎的后缀名称注意事项

虽然Thymeleaf模板引擎文件的后缀名称是.html,但是这种文件严格来说并不属于静态资源文件,而是模板文件,存放的目录也是在模板目录中,与前文中演示的HTML静态页面有一些区别。第7章用到的test.html页面是放在static目录中的,部署后可以直接访问其路径。但是模板引擎文件一般不允许直接访问,而是要经过Controller控制器的处理,将动态数据返回到模板文件中进行读取并渲染的。比如本章演示的几个请求,都在控制器中实现了对应的方法并最终返回一个Thymeleaf视图对象在浏览器中呈现。

2. 必须引入名称空间

名称空间引入方法如下所示:

虽然不引入以上名称空间,静态资源访问和模板动态访问也不会报错,但是建议在开发过程中最好引入该名称空间。因为在引入之后会有Thymeleaf代码的语法提示,能够提升开发效率,也能减少人为造成的低级错误。有些开发人员可能会忽略这个事情。

3. 禁用模板缓存

Thymeleaf的默认缓存设置是通过配置文件的spring.thymeleaf.cache配置属性决定的。通过图8-7中展示的Thymeleaf模板配置属性类ThymeleafProperties可以发现该属性默认为true,因此Thymeleaf默认是使用模板缓存的。该设置有助于改善应用程序的性能,因此模板只需编译一次即可。

图8-7 Thymeleaf的默认缓存设置

除非重启应用程序,否则在开发过程中不能实时看到页面变更的效果,因此建议将该属性设置为false,在配置文件中修改代码如下所示: