Thymeleaf介绍及其在Spring Boot中的使用

2023-06-27 18:30:00

📖 Thymeleaf简介

📚 Thymeleaf的定义

Thymeleaf 是一款现代化的服务器端 Java 模板引擎,适用于 Web 和独立应用场景。它具备处理 HTML、XML、JavaScript、CSS 以及纯文本的能力。Thymeleaf 的核心目标是为开发者提供一种优雅且自然的模板设计方式,从而使得开发者能够更加便捷地构建、创建和维护结构化且语义正确的 Web 页面。

🌟 Thymeleaf的特点

  • Thymeleaf具有可读性强、易于理解的语法。
  • Thymeleaf支持Spring MVC的所有特性,可以与Spring框架无缝集成。
  • Thymeleaf可以在没有Web服务器的情况下运行,便于开发和测试。
  • Thymeleaf支持多种模板解析器,可以根据需要选择合适的解析器。

🌐 Thymeleaf的应用场景

Thymeleaf 是一款适用于各种 Web 应用程序的强大模板引擎,无论是传统的服务器端 Web 应用程序、单页应用程序,还是移动 Web 应用程序,都能够轻松应对。此外,Thymeleaf 不仅局限于动态内容的生成,还可以用于生成静态内容,如电子邮件模板等,为开发者提供了极大的便利和灵活性。

🚀 在Spring Boot中使用Thymeleaf

📦 添加Thymeleaf依赖

在Spring Boot项目的pom.xml文件中,添加Thymeleaf的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

⚙️ 配置Thymeleaf

在Spring Boot的application.properties或application.yml文件中,可以配置Thymeleaf的相关属性,例如模板文件的位置、缓存策略等。

spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    cache: false

📝 编写Thymeleaf模板

在指定的模板文件夹(如上述配置中的classpath:/templates/)中,创建一个HTML文件,例如index.html。在HTML文件中,可以使用Thymeleaf的语法编写动态内容。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Thymeleaf示例</title>
</head>
<body>
    <h1 th:text="${message}">Hello, Thymeleaf!</h1>
</body>
</html>

🎮 编写Spring Boot控制器

在Spring Boot项目中,创建一个控制器类,使用@Controller注解。在控制器方法中,可以将数据添加到Model对象中,并返回Thymeleaf模板的名称。

@Controller
public class HomeController {

    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("message", "Hello, Thymeleaf!");
        return "index";
    }
}

📚Thymeleaf的常用语法

📊 变量表达式

使用${...}语法,可以在Thymeleaf模板中访问变量的值。

<p th:text="${user.name}">用户名</p>

🎛️ 选择表达式

使用*{...}语法,可以在Thymeleaf模板中访问当前对象的属性。

<div th:object="${user}">
    <p th:text="*{name}">用户名</p>
</div>

🔄 迭代表达式

使用th:each属性,可以在Thymeleaf模板中遍历集合。

<ul>
    <li th:each="user : ${users}" th:text="${user.name}">用户名</li>
</ul>

🤝 Thymeleaf与Spring Boot的集成

🌱 使用Spring表达式语言

在Thymeleaf模板中,可以使用Spring表达式语言(SpEL)进行更复杂的表达式计算。

<p th:text="${@userService.findUserById(1).name}">用户名</p>

🔐 使用Spring Security集成

Thymeleaf可以与Spring Security集成,提供安全相关的标签和表达式。

<div th:if="${#authorization.expression('hasRole(''ROLE_ADMIN'')')}">
    管理员功能
</div>

🛠️ 使用Spring Boot的自动配置

Spring Boot提供了Thymeleaf的自动配置,可以根据项目的依赖和配置自动创建和配置Thymeleaf模板引擎、视图解析器等组件。

🔌 Thymeleaf的扩展和插件

🗣️ 使用额外的方言

接下来,我们将探讨Thymeleaf的一个重要特性,即支持使用额外的方言。这些方言包括Spring Security方言、布局方言等,它们可以为我们的Web应用带来更丰富的功能和更好的用户体验。接下来,我们将详细介绍如何通过添加依赖和配置方言来使用这些功能。

首先,我们需要了解什么是Thymeleaf方言。简单来说,方言是一组自定义的标签、属性和表达式,它们可以扩展Thymeleaf的功能,使其更加强大和灵活。例如,Spring Security方言可以帮助我们轻松地实现基于角色的页面内容显示,而布局方言则可以让我们更方便地管理页面布局和模板。

要使用这些方言,我们需要先在项目中添加相应的依赖。以Spring Security方言为例,我们可以在项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    <version>3.0.4.RELEASE</version>
</dependency>

接下来,我们需要在Thymeleaf模板引擎中配置这些方言。这可以通过在Spring配置类中定义一个SpringTemplateEngine bean并添加相应的方言实现。以下是一个示例:

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        templateEngine.addDialect(new SpringSecurityDialect());
        return templateEngine;
    }
}

至此,我们已经成功地为Thymeleaf引入了Spring Security方言。现在,我们可以在模板中使用这些方言提供的标签和属性,从而轻松地实现基于角色的页面内容显示等功能。

🛠️ 开发自定义方言

可以根据项目的需求,开发自定义的Thymeleaf方言,实现特定的标签和表达式。

在实际项目开发过程中,我们可能会遇到一些特定的需求,这时候,我们可以考虑开发自定义的 Thymeleaf 方言来实现这些特定的标签和表达式。通过这种方式,我们可以更好地满足项目的个性化需求,提高代码的可读性和可维护性。

我们可以根据项目的具体需求,设计自定义的标签和表达式。在设计过程中,我们需要考虑如何将这些元素与现有的 Thymeleaf 元素进行整合,以及如何确保它们的语义清晰、易于理解。

完成设计后,我们需要编写相应的 Java 代码来实现这些自定义元素。在编写代码时,我们需要遵循 Thymeleaf 的扩展规范,确保我们的自定义方言能够顺利地与 Thymeleaf 集成。

最后,我们需要在项目中引入自定义的 Thymeleaf 方言,并在模板中使用这些新的标签和表达式。这样,我们就可以利用自定义的 Thymeleaf 方言为项目提供更加丰富、灵活的功能,提高开发效率。

🧩 使用Thymeleaf插件

Thymeleaf有一些社区开发的插件,可以帮助我们轻松实现各种常见的功能,例如生成表格、实现分页等。在实际开发过程中,我们可以根据项目需求,灵活选择并集成这些插件,从而提高开发效率,优化用户体验。

更多推荐

千万级用户的大型网站,如何进行服务器压力预估?

前言:一般情况下,单台Tomcat服务器每秒支撑500请求,单台MySQL数据库每秒支撑5000左右的请求,单台Redis缓存支撑每秒几万请求。1、千万级用户量的压力预估假设大型网站预估用户数是1000万,那么根据28法则,每天会来访问这个网站的用户占到20%,也就是200万用户每天会过来访问。通常假设平均每个用户每次

Linux 文件权限基础:文件和目录权限管理指南

文章目录Linux文件权限基础1.引言1.1什么是文件权限1.2文件权限的重要性2.Linux文件权限基础2.1Linux文件系统简介2.2文件和目录的属性2.3权限类型:读、写和执行2.4所有者、组和其他用户2.5权限符号表示法:r、w、x和-2.6使用ls-l命令查看文件权限3.修改文件权限3.1使用chmod命令

【JVM】Java的内存模型(JMM)!

一、运行时数据区域划分JVM虚拟机在执行Java程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK1.8之前分为:线程共享(Heap堆区、MethodArea方法区)、线程私有(虚拟机栈、本地方法栈、程序计数器)JDK1.8以后分为:线程共享(Heap堆区、MetaSpace元空间)、线程私有(虚拟机栈、本

只需100GB内存,让Falcon 180B在你的电脑上起飞

一、前言自2023年5月,阿布扎比技术创新研究所(TII)发布了两个预训练的LLM:Falcon7B和Falcon-40B,这两个模型的表现十分优异,在OpenLLM排行榜上高居榜首。然而,在短短不到几个月的时间,研究所又推出了第三个重量级的大语言模型——Falcon180B。以下是有关Falcon180B的一些主要特

LLM 11-环境影响

LLM11-环境影响在本章中,首先提出一个问题:大语言模型对环境的影响是什么?这里给出的一个答案是:气候变化一方面,我们都听说过气候变化的严重影响(文章1、文章2):我们已经比工业革命前的水平高出1.2°C需要保持在1.5°C以下以避免气候危机根据目前的轨迹,在未来几十年内将达到2.7°C另一方面,我们看到训练大语言模

不断探索创新 促进中国信息技术发展——南京宏控科技有限公司董事长应富忠

应富忠,男,现任南京宏控科技有限公司董事长、电子系统工程高级工程师(技术五级)、自动化系统注册工程师,先后被评为“研究所级青年突击手”、“研究所级先进工作者”、“研究所级优秀共产党员”、“南京市级考级优秀”等荣誉称号,持有江苏省国防工办系统可靠性设计资质证书。南京市专家组成员,2003-2016年。江苏省科技计划项目评

CESM模型教程

详情点击公众号技术科研吧链接:地球系统模式(CESM)教程前言目前通用地球系统模式(CommunityEarthSystemModel,CESM)在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来,一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆

数据治理-数据仓库环境

数据仓库环境包括一系列组织起来以满足企业需求的架构组件,从源系统流动到数据暂存区,数据可以在这里被清晰,当数据集成并存储在数据仓库或操作数据存储中时,可以对其进行补充丰富。在数据仓库中,可以通过数据集市或数据立方体访问数据,生成各种各样的报表。其中包括:源系统;(CRM\账务系统或者DaaS服务、网页内容和任何大数据计

Spark

ApacheSpark是一种快速、通用、可扩展的大数据处理引擎,旨在处理大规模数据集并进行高效的数据分析。与HadoopMapReduce相比,Spark具有更高的性能和更丰富的功能,可以处理更复杂的数据处理任务。以下是ApacheSpark的一些基本概念:SparkCore:这是Spark的基本引擎,提供了分布式任务

计算机网络的分层体系结构

为什么要分层面对一个复杂系统时,将其划分成小的,功能独立的模块或子系统,能更好的解决问题付诸应用。有哪些好处各层之间是独立的灵活性好结构上可以分开易于实现和维护有利于功能复用能促进标准化工作计算机网络体系结构经历的阶段计算机网络分层体系结构的发展经历了以下主要阶段:早期的分层概念(1970s):分层体系结构的思想最早出

2023.9.11 关于传输层协议 UDP和TCP 详解

目录UDP协议TCP协议TCP十大核心机制确认应答超时重传连接管理(三次握手四次挥手)滑动窗口流量控制拥塞控制延时应答捎带应答面向字节流粘包问题TCP中的异常处理经典面试题对比TCP和UDP如何使用UDP实现可靠传输UDP协议源端口:指发送方的端口号目的端口:指接收方的端口号注意:端口号都是用两个字节来表示的,也就是1

热文推荐