![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=1739678850-4uxMyDrVo13xFi6xio8LuqRIgo2SaNAu-0-ede1fbf84c8fe96426000047cebdfb47)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/153-1.jpg?sign=1739678850-rgWltyXf7LIMzun0BKfmxaGEcY47VEQA-0-99759518c90df2957130730fee02dfdf)
8.3.2 创建模板文件
在resources/templates目录下新建模板文件thymeleaf.html。Thymeleaf模板引擎的默认后缀名即为.html。在新增文件后,首先在模板文件的标签中导入Thymeleaf的名称空间:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/154-1.jpg?sign=1739678850-3s2bidquqRKp9zIQJnnME7BG6nWZNvCn-0-afacc693a9efd355e9c047f85c76a369)
导入该名称空间主要是为了Thymeleaf语法的提示和Thymeleaf标签的使用。接下来在模板中增加与JSP中相同的显示内容,最终的模板文件代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/154-2.jpg?sign=1739678850-bxkHCRphjTR7HrLDkk58ExAh1QyaO68k-0-5c310933929a1725f23ade0d5cc0e95d)
9.3.3 编辑Controller代码
在controller包下新增ThymeleafController.java文件,将模板文件所需的description字段赋值并转发至模板文件,代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/154-3.jpg?sign=1739678850-a2kh7KIvY8ZImsL6i2jq6FzY5YeJYlez-0-ef275156f8d0c178bfd04d686100106b)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-1.jpg?sign=1739678850-MJibs9wzqD4jDV4Qd2DiQCDe8hTsWs0j-0-74008c1a0ecb7b1f7726227e0eec24c1)
最终的代码目录结构如图8-4所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-2.jpg?sign=1739678850-kfPiXsELJVVuk6eghSSUM1ofHa3FKVsi-0-7db47b8341172e37aad485c80cfea4ee)
图8-4 Thymeleaf整合完成后的目录结构
在项目启动成功后,打开浏览器并输入本地域名和端口号,访问如下地址:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-3.jpg?sign=1739678850-TUK531vNlNgEmaaxciKDKp1He3RGcpyZ-0-3c4eb30e1734c0de6c21c167513029a6)
首先可以看到在原来静态html标签中的内容已经替换为“springboot-thymeleaf”字符串,而不再是默认内容,页面效果如图8-5所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/155-4.jpg?sign=1739678850-Y4q1eICPwLlt9UwRp9HJqmnwQe3Bu97U-0-24c819afb08077c0d2196d510a8810c3)
图8-5 Thymeleaf模板引擎渲染结果1
然后把description参数值传给后端处理方法,将模板中的字段改为“我是十三”,页面效果如图8-6所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/156-1.jpg?sign=1739678850-Q3tnkKmxvZRgwCZrCdECT1OEgQoykaQm-0-d3f94471240f174727b530eb8c372562)
图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=1739678850-t4qgt1wNpFmKq643OIDWUHCxxcOw5cRx-0-81bea6a5a7adf587eb1239da3035bc22)
虽然不引入以上名称空间,静态资源访问和模板动态访问也不会报错,但是建议在开发过程中最好引入该名称空间。因为在引入之后会有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=1739678850-mooQjGoKcjg6hQ0ZGjW6kM78pxypujef-0-fd85c5bcf77de2a913252bd826c08ed0)
图8-7 Thymeleaf的默认缓存设置
除非重启应用程序,否则在开发过程中不能实时看到页面变更的效果,因此建议将该属性设置为false,在配置文件中修改代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/157-2.jpg?sign=1739678850-N3LjWtlrCVV7zGEmS34oydSiZk1qvHH2-0-4992a12a75e67e7987f6f8081a1304d8)