SpringBoot 集成 Thymeleaf 简洁入门

本文介绍SpringBoot集成Thymeleaf模板引擎的快速入门方法,涵盖依赖引入、目录结构、控制器与模板编写,重点讲解标准表达式(变量、选择、链接、消息)、常用属性、内联写法及片段复用等核心语法,突出其与HTML无缝融合、零XML配置、开箱即用的特性。

1. 引言

Thymeleaf 是 SpringBoot 官方推荐的模板引擎,语法简洁、与 HTML 完美融合,非常适合快速开发服务端渲染页面。本文用最少的篇幅带你跑通一个 Thymeleaf 示例。

2. 引入依赖

在 pom.xml 中添加:

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

3. 目录结构

模板文件默认放在 src/main/resources/templates/ 下,静态资源放在 static/ 下。

src/main/resources/
├── static/
└── templates/
    └── index.html

4. 编写控制器

@Controller
public class HelloController {

    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("name", "SpringBoot");
        return "index";
    }
}

5. 编写模板

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <h1 th:text="'Hello, ' + ${name}">Hello</h1>
</body>
</html>

6. 常用语法

  • 取值:th:text="${name}"
  • 条件:th:if="${condition}"
  • 循环:th:each="item : ${list}"
  • 链接:th:href="@{/path}"

7. 用法总结

7.1 标准表达式

  • 变量表达式:${name},等价于 model.addAttribute("name", ...) 中的取值。
  • 选择表达式:*{field},配合 th:object 使用,直接取当前对象的属性。
  • 链接表达式:@{/path},自动拼接上下文路径,支持参数如 @{/user/{id}(id=${user.id})}。
  • 消息表达式:#{msg},读取国际化资源文件中的文案。

7.2 常用属性

属性作用示例
th:text输出文本th:text="${name}"
th:if条件判断th:if="${user != null}"
th:unless条件取反th:unless="${user.admin}"
th:each循环遍历th:each="item : ${list}"
th:href生成链接th:href="@{/detail/{id}(id=${item.id})}"
th:src图片地址th:src="@{/img/logo.png}"
th:class动态样式th:class="${active ? 'on' : 'off'}"
th:object绑定对象th:object="${user}"

7.3 内联写法

不想写标签属性时,可用 [[${name}]] 直接输出变量,适合在 <script> 或文本中混用。

7.4 片段复用

用 th:fragment 定义公共片段,用 th:replace 或 th:insert 引入,实现页面组件化复用。

7.5 小结

掌握表达式、常用属性、内联与片段复用这四块,就能覆盖绝大多数 Thymeleaf 开发场景。配合 SpringBoot 的自动配置,无需额外 XML 配置即可开箱即用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值