Thymeleaf 是一种服务器端 Java 模板引擎,用于构建基于 Java 的 web 应用程序。它允许开发人员在网页中嵌入动态内容,并将这些内容与后端 Java 代码进行交互。
Thymeleaf 的主要特点如下:
- 自然模板:Thymeleaf 模板语法简单明了,类似于 HTML,易于学习和使用。这使得开发人员能够更直观地理解和修改模板。
- 服务器端渲染:Thymeleaf 在服务器端执行模板渲染,生成最终的 HTML 页面。这使得在服务器端可以进行动态数据的处理和操作,生成个性化的页面内容。
- 强大的表达式语言:Thymeleaf 提供了一种强大的表达式语言(Expression Language,简称EL),用于在模板中访问和操作后端数据。EL 支持变量、表达式、条件判断、循环等常用功能,使得模板能够动态地展示数据。
- 多种模板布局:Thymeleaf 支持模板布局和片段重用,可以通过定义布局模板和片段模板来实现页面的复用和组合。这对于构建具有一致性和可维护性的网页非常有用。
- 与 Spring 框架集成:Thymeleaf 可以与 Spring 框架无缝集成,提供了与 Spring MVC 的紧密配合。它可以作为 Spring MVC 的视图解析器,将模板渲染为最终的 HTML 页面。
具体实现步骤如下:
- 添加依赖:在你的项目中,添加 Thymeleaf 的依赖项。如果你使用的是 Maven,可以在
pom.xml
文件中添加以下依赖:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
- 配置 Thymeleaf:在你的应用程序配置文件(如
application.properties
或application.yml
)中,配置 Thymeleaf 的相关属性。例如,你可以指定 Thymeleaf 模板文件的位置、缓存设置等。以下是一个示例的配置:
ini
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=utf-8
spring.thymeleaf.mode=HTML5
spring.thymeleaf.cache=false
-
spring.thymeleaf.prefix
:该属性指定 Thymeleaf 模板文件的位置。在这个示例中,classpath:/templates/
表示模板文件存放在项目的src/main/resources/templates/
目录下。
-
spring.thymeleaf.suffix
:该属性指定 Thymeleaf 模板文件的后缀名。在这个示例中,.html
表示模板文件使用.html
扩展名。
-
spring.thymeleaf.cache
:该属性指定是否启用 Thymeleaf 的模板缓存。如果设置为true
,则启用缓存;如果设置为false
,则禁用缓存。在开发阶段,通常禁用缓存以便于及时看到模板的更改效果。
- 创建 Thymeleaf 模板:在你的项目中创建 Thymeleaf 模板文件,通常存放在
src/main/resources/templates/
目录下。Thymeleaf 模板使用.html
扩展名,并且可以包含 Thymeleaf 的标签和表达式。 - 在控制器中使用 Thymeleaf:在你的 Spring MVC 控制器中,通过返回视图名称的方式来使用 Thymeleaf。例如,你可以使用
Model
对象返回视图名称,并将需要在模板中使用的数据添加到模型中。
less
@Controller
@RequestMapping("thy")
public class ThyController {
@RequestMapping("hello")
public String hello(Model model){
model.addAttribute("message", "welcome to thy");
return "thydemo";
}
- 在 Thymeleaf 模板中使用数据:在 Thymeleaf 模板中,可以使用 Thymeleaf 的表达式语言来访问和展示后端传递的数据。例如,你可以使用
${message}
表达式来显示控制器中传递的消息。
xml
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css"></style>
</head>
<body>
<a>Hello Thymeleaf</a><br>
<h1 th:text="${message}">666</h1>
</body>
</html>
6.编译springboot的入口类
typescript
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(App.class, args);
}
}
-
import org.springframework.boot.SpringApplication;
和import org.springframework.boot.autoconfigure.SpringBootApplication;
:这两行是导入 Spring Boot 相关的类和注解。
-
@SpringBootApplication
:这是一个注解,用于标记该类是一个 Spring Boot 应用程序的入口类。它包含了多个注解的组合,包括@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。
-
public class App
:这是一个公共类,类名为App
,它是应用程序的入口类。
-
public static void main(String[] args)
:这是一个公共静态方法,它是应用程序的入口方法。当程序运行时,会从这个方法开始执行。
-
SpringApplication.run(App.class, args)
:这是 Spring Boot 应用程序的启动方法。它会启动 Spring Boot 容器,并加载配置文件、初始化各种组件和执行必要的启动操作。
- 总结起来,这段代码定义了一个 Spring Boot 应用程序的入口类
App
,并通过SpringApplication.run()
方法启动了该应用程序。通过这个入口类,你可以配置和启动 Spring Boot 应用程序,并执行相应的业务逻辑。
通过以上步骤,你就可以使用 Thymeleaf 来创建动态的 web 页面了。当你访问 /thy/hello
路径时,控制器会返回名为 thydemo
的 Thymeleaf 模板,并将消息传递给模板,模板会将消息展示在页面上。
Thymeleaf 是一种模板引擎,它的底层原理可以简单概括为以下几个步骤:
- 解析模板:Thymeleaf 首先会读取并解析模板文件。模板文件通常是一个 HTML 文件,其中包含了 Thymeleaf 的标签和表达式。
- 构建文档对象模型(Document Object Model,DOM):Thymeleaf 将解析的模板文件转换为一个文档对象模型,这个模型表示了整个模板的结构和内容。
- 执行表达式:Thymeleaf 会遍历文档对象模型,查找并执行其中的 Thymeleaf 表达式。表达式可以包含在标签的属性值中,也可以直接嵌入到标签的内容中。Thymeleaf 的表达式语言支持访问和操作后端传递的数据,以及执行一些逻辑操作。
- 渲染模板:在执行表达式的过程中,Thymeleaf 会根据表达式的结果来修改文档对象模型中的内容。最终,Thymeleaf 将根据修改后的文档对象模型生成最终的 HTML 输出。
- 返回 HTML 输出:Thymeleaf 将生成的 HTML 输出返回给客户端,客户端的浏览器会将其解析并显示为最终的网页内容。
总体来说,Thymeleaf 的底层原理是将模板文件解析成文档对象模型,然后根据表达式的执行结果来修改模型中的内容,最后生成最终的 HTML 输出。这种方式使得开发人员可以在模板中使用表达式来动态地生成和展示内容,从而实现动态网页的生成和渲染。Thymeleaf 的优势之一是它的语法简洁易懂,同时也支持与其他后端框架(如 Spring MVC)的集成,使得开发人员可以方便地在后端和前端之间传递数据和逻辑。