Thymeleaf是什么

我们知道,Servlet 作为第一代 JavaWeb 开发技术,是可以被用来开发动态网页的,其基本原理是通过 Java 程序代码将 HTML 代码以字符串的形式一段一段地输出到网页文件中,然后再发送到客户端展示。

但使用 Servlet 开发动态网页的过程中,需要将 Java 代码和 HTML 代码混合在一起,这使得这会导致代码复杂度增加,难以维护,因此在实际开发过程中几乎不会有人直接使用 Servlet 来开发 JavaWeb 应用。于是第二代 JavaWeb 开发技术 JSP 应运而生。  

JSP模板引擎技术

JSP(Java Server Pages)是继 Servlet 之后的第二代 Java Web 开发技术,它是一种模板引擎技术,其基本原理是在 HTML 文档中嵌入 Java 代码:静态网页内容依然使用 HTML 代码书写,展示动态数据的内容则使用 Java 代码生成。    
模板引擎是一种为了使用户界面(即前端 HTML 页面)与业务数据(后端代码产生的响应数据)分离而产生的技术,它可以生成特定格式的模板文档。例如,用于网站的模板引擎就会生成一个标准的 HTML 文档。    
相比 Servlet,JSP 技术确实进步了很多,因此在过去几十年里 JSP 非常流行。但是随着时间的推移,JSP 的许多缺点也逐步暴漏出来,其中最让人诟病的就是 JSP 是通过在前端页面中嵌入 Java 代码的方式来实现动态网页的开发的,这就意味着其仍然存在前后端代码混写,代码繁琐,开发效率低下等问题。

近些年来随着前后端分离思想的流行,JSP 已经逐步走向了没落,现在基本上也不会有人再使用 JSP 进行开发了,而将目光转向了市面上的其他模板引擎技术,例如:Thymeleaf、FreeMaker、Velocity 等。在这些模板引擎中,最流行、最受推崇的就是 Thymeleaf。可以这么说,Thymeleaf 是 JSP 最好的替代品之一。      
当下最炙手可热的 Spring Boot 框架也极力推荐我们使用 Thymeleaf 来代替 JSP 进行 Web 开发,并且还专门为 Thymeleaf 提供了自动化配置解决方案,因此在 SpringBoot 中使用 Thymeleaf 非常方便。    

Thymeleaf 模板引擎

Thymeleaf 是一款基于 Java 的服务端模板引擎,它是使用 Java 语言开发的,可以处理 HTML,XML,JavaScript,CSS和文本等不同类型的模板文件。截止当前,Thymeleaf 的最新版本是 Thymeleaf 3.1.1。

Thymeleaf 提供了⼀个优雅且高度可维护的模板创建方式,它可以在不破坏模板原有结构和功能的前提下,将后端程序的动态数据注入到模板文件中,以实现动态网页的开发。使用 Thymleaf 进行动态网页开发时,需要我们按照一定的规则对原有的 HTML 页面进行“加工”。这个“加工”的过程就是在 HTML 原有的基础上增加一些额外的、携带了后端动态数据的 Thymeleaf 标签属性和表达式。

这些 Thymeleaf 属性和表达式并不会对 HTML 原有的结构造成破坏,也不会影响 HTML 文件原来的功能,因此这些被 Thymeleaf 加工过的 HTML 模板文件仍然可以在浏览器中直接打开,此时浏览器会忽略其中未定义的 Thymeleaf 标签属性,展示静态网页效果。但当我们通过 Web 应用来访问这些 HTML 文件时,Thymeleaf 会将 HTML 中原有的静态内容替换为 Thymeleaf 属性中携带的动态数据,展示动态网页效果。

例如,下面就是一个被 Thymeleaf 加工过的 HTML 文件中的代码。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--th:text 为 Thymeleaf 属性,用于在展示文本-->
<h1 th:text="迎您来到Thymeleaf">欢迎您访问静态页面 HTML</h1>
</body>
</html>

当我们直接使用浏览器打开该 HTML 文件时,浏览器展示结果如下。
欢迎您访问静态页面HTML

当通过 Web 应用访问该 HTML 文件时时,浏览器展示结果如下。
迎您来到Thymeleaf

关  闭