![Spring Boot实战:从0开始动手搭建企业级项目](https://wfqqreader-1252317822.image.myqcloud.com/cover/850/40107850/b_40107850.jpg)
8.3 Spring Boot之Thymeleaf整合
这一节主要介绍Thymeleaf的整合过程和注意事项,并通过一个实践案例进行讲解。
8.3.1 引入Thymeleaf依赖
因为Spring Boot官方提供了Thymeleaf的场景启动器spring-boot-starter-thymeleaf,因此可以直接在pom.xml文件中添加该场景启动器,最终的pom.xml文件代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/152-1.jpg?sign=1739696011-0DV3DUoNA7utqD0E3WZj8UTib9IlokWZ-0-ca8f795865157febbb4bde0d704462a8)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/153-1.jpg?sign=1739696011-Cexc14jVE56z8jPHOudawd1jQ8xd1kZd-0-084108dbcfb3b2dfabad2c2fe59c9255)
8.3.2 创建模板文件
在resources/templates目录下新建模板文件thymeleaf.html。Thymeleaf模板引擎的默认后缀名即为.html。在新增文件后,首先在模板文件的标签中导入Thymeleaf的名称空间:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/154-1.jpg?sign=1739696011-ZDs6k29TBXsnzR8wkkBxzq4fTfxCWSWW-0-e6ad695c8253fc5263003e6afd8ce6f8)
导入该名称空间主要是为了Thymeleaf语法的提示和Thymeleaf标签的使用。接下来在模板中增加与JSP中相同的显示内容,最终的模板文件代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/154-2.jpg?sign=1739696011-fTmih8LXToPVlD45eniO04EOBqfVkR0j-0-a36bf750ef6ec65278a12664afa0f009)
9.3.3 编辑Controller代码
在controller包下新增ThymeleafController.java文件,将模板文件所需的description字段赋值并转发至模板文件,代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/154-3.jpg?sign=1739696011-R08vGLLPaRbNbzTzOWyfDwPF0g5AmDyW-0-340b8575bf7dfc28abc9acf8c1177911)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-1.jpg?sign=1739696011-TX4Wz3GEs2u9v6lbsUY9Ux9tUdNp354s-0-0f2f51cab91baff9d3db0aa0865235a7)
最终的代码目录结构如图8-4所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-2.jpg?sign=1739696011-DyZlqk6Srosyy8PCI8RkvVLqTZRIqubq-0-19dea617df92ab4b243f666891098ecc)
图8-4 Thymeleaf整合完成后的目录结构
在项目启动成功后,打开浏览器并输入本地域名和端口号,访问如下地址:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-3.jpg?sign=1739696011-ee3tcwQSImfkOtrivXuwJyHsb96qcR0m-0-03cb8605e7fc44217689f0c20551b9fe)
首先可以看到在原来静态html标签中的内容已经替换为“springboot-thymeleaf”字符串,而不再是默认内容,页面效果如图8-5所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-4.jpg?sign=1739696011-gJwRvlIJBUPoA03LNfnQRoEbZJkhON05-0-eb9c694a1c77b4eeff21679fddd80581)
图8-5 Thymeleaf模板引擎渲染结果1
然后把description参数值传给后端处理方法,将模板中的字段改为“我是十三”,页面效果如图8-6所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/156-1.jpg?sign=1739696011-EcNybGpW5Uq2FNMV6PCTEakV1tMGj9PH-0-1820eec2bf44dec88127f9b042131e0d)
图8-6 Thymeleaf模板引擎渲染结果2
8.3.4 Thymeleaf模板引擎使用注意事项
1. 模板引擎的后缀名称注意事项
虽然Thymeleaf模板引擎文件的后缀名称是.html,但是这种文件严格来说并不属于静态资源文件,而是模板文件,存放的目录也是在模板目录中,与前文中演示的HTML静态页面有一些区别。第7章用到的test.html页面是放在static目录中的,部署后可以直接访问其路径。但是模板引擎文件一般不允许直接访问,而是要经过Controller控制器的处理,将动态数据返回到模板文件中进行读取并渲染的。比如本章演示的几个请求,都在控制器中实现了对应的方法并最终返回一个Thymeleaf视图对象在浏览器中呈现。
2. 必须引入名称空间
名称空间引入方法如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/156-2.jpg?sign=1739696011-CwpIn4k9X0LEhIVvoSAvkXrLScTP1yFP-0-297849d2afca598c6ba25ec9bab69947)
虽然不引入以上名称空间,静态资源访问和模板动态访问也不会报错,但是建议在开发过程中最好引入该名称空间。因为在引入之后会有Thymeleaf代码的语法提示,能够提升开发效率,也能减少人为造成的低级错误。有些开发人员可能会忽略这个事情。
3. 禁用模板缓存
Thymeleaf的默认缓存设置是通过配置文件的spring.thymeleaf.cache配置属性决定的。通过图8-7中展示的Thymeleaf模板配置属性类ThymeleafProperties可以发现该属性默认为true,因此Thymeleaf默认是使用模板缓存的。该设置有助于改善应用程序的性能,因此模板只需编译一次即可。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/157-1.jpg?sign=1739696011-4lujICWhALmGUGqHNY52WK5Ir6NHxsO3-0-e288bb3db63c269b968e94d4b8945bcd)
图8-7 Thymeleaf的默认缓存设置
除非重启应用程序,否则在开发过程中不能实时看到页面变更的效果,因此建议将该属性设置为false,在配置文件中修改代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/157-2.jpg?sign=1739696011-Sj22k2YsNvdEjHljrXIayEPjEUtuWO5n-0-d9cdd6e0a808294c82ad0dafc0c830f8)