• 17. Spring Boot整合Thymeleaf


    Spring Boot 推荐使用 Thymeleaf 作为其模板引擎。SpringBoot 为 Thymeleaf 提供了一系列默认配置,项目中一但导入了 Thymeleaf 的依赖,相对应的自动配置 (ThymeleafAutoConfiguration) 就会自动生效,因此 Thymeleaf 可以与 Spring Boot 完美整合 。

    Spring Boot 整合 Thymeleaf 模板引擎,需要以下步骤:

    1. 引入 Starter 依赖
    2. 创建模板文件,并放在在指定目录下

    引入依赖

    Spring Boot 整合 Thymeleaf 的第一步,就是在项目的 pom.xml 中添加 Thymeleaf 的 Starter 依赖,代码如下。

    1. <!--Thymeleaf 启动器-->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-thymeleaf</artifactId>
    5. </dependency>

    创建模板文件

    Spring Boot 通过 ThymeleafAutoConfiguration 自动配置类对 Thymeleaf 提供了一整套的自动化配置方案,该自动配置类的部分源码如下。

    1. @Configuration(
    2. proxyBeanMethods = false
    3. )
    4. @EnableConfigurationProperties({ThymeleafProperties.class})
    5. @ConditionalOnClass({TemplateMode.class, SpringTemplateEngine.class})
    6. @AutoConfigureAfter({WebMvcAutoConfiguration.class, WebFluxAutoConfiguration.class})
    7. public class ThymeleafAutoConfiguration {
    8. }

    ThymeleafAutoConfiguration 使用 @EnableConfigurationProperties 注解导入了 ThymeleafProperties 类,该类包含了与 Thymeleaf 相关的自动配置属性,其部分源码如下。

    1. @ConfigurationProperties(
    2. prefix = "spring.thymeleaf"
    3. )
    4. public class ThymeleafProperties {
    5. private static final Charset DEFAULT_ENCODING;
    6. public static final String DEFAULT_PREFIX = "classpath:/templates/";
    7. public static final String DEFAULT_SUFFIX = ".html";
    8. private boolean checkTemplate = true;
    9. private boolean checkTemplateLocation = true;
    10. private String prefix = "classpath:/templates/";
    11. private String suffix = ".html";
    12. private String mode = "HTML";
    13. private Charset encoding;
    14. private boolean cache;
    15. ...
    16. }

    ThymeleafProperties 通过 @ConfigurationProperties 注解将配置文件(application.properties/yml) 中前缀为 spring.thymeleaf 的配置和这个类中的属性绑定。

    在 ThymeleafProperties 中还提供了以下静态变量:

    • DEFAULT_ENCODING:默认编码格式
    • DEFAULT_PREFIX:视图解析器的前缀
    • DEFAULT_SUFFIX:视图解析器的后缀


    根据以上配置属性可知,Thymeleaf 模板的默认位置在 resources/templates 目录下,默认的后缀是 html,即只要将 HTML 页面放在“classpath:/templates/”下,Thymeleaf 就能自动进行渲染。

    与 Spring Boot 其他自定义配置一样,我们可以在 application.properties/yml 中修改以 spring.thymeleaf 开始的属性,以实现修改 Spring Boot 对 Thymeleaf 的自动配置的目的。

    示例

    1. 创建一个名为 hello.html 的页面,并将该页面放在项目类路径(resources)下的 templates 目录中,hello.html 代码如下。

    1. <!DOCTYPE html>
    2. <!--导入thymeleaf的名称空间-->
    3. <html lang="en" xmlns:th="http://www.thymeleaf.org">
    4. <head>
    5. <meta charset="UTF-8">
    6. <title>Title</title>
    7. </head>
    8. <body>
    9. <!--th:text 为 Thymeleaf 属性,用于获取指定属性的值-->
    10. <h1 th:text="'欢迎来到'+${name}"></h1>
    11. </body>
    12. </html>

    2. 新建一个控制类 HelloController,并通过参数 map 传递数据到前台页面中,代码如下。

    1. package net.biancheng.www.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import java.util.Map;
    5. @Controller
    6. public class HelloController {
    7. @RequestMapping("/hello")
    8. public String hello(Map<String, Object> map) {
    9. //通过 map 向前台页面传递数据
    10. map.put("name", "编程帮(www.biancheng.net)");
    11. return "hello";
    12. }
    13. }

    3. 启动 Spring Boot,使用浏览器访问“http://localhost:8080/hello”,结果如下图。
     


    图1:Thymleaf 整合

     

  • 相关阅读:
    带你Java入门(Java系列1)
    544、RabbitMQ详细入门教程系列 -【手动消费确认】 2022.09.05
    windows http-server 因为在此系统上禁止运行脚本
    Socket编程-应用编程接口(API)--套接字(及其函数介绍)
    掌握逻辑漏洞复现技术,保护您的数字环境
    8、RedLock协议
    (C语言)fscanf与fprintf函数详解
    Spark案例实际操作
    java计算机毕业设计社区老年人信息管理系统源程序+mysql+系统+lw文档+远程调试
    OpenCV图像处理学习十八,霍夫变换实现交通车道线检测
  • 原文地址:https://blog.csdn.net/tiger00598/article/details/125495456