Thymeleaf基本使用

介绍

官网:https://www.thymeleaf.org/

Thymeleaf是一个用于Web和独立环境的现代服务器端Java模板引擎。

简单示例

打开IDEA,创建一个maven工程(quickstart archetype)·。

在pom.xml文件中导入依赖,目前最新版本3.0.15:

<dependency>
  <groupId>org.thymeleaf</groupId>
  <artifactId>thymeleaf</artifactId>
  <version>3.0.15.RELEASE</version>
</dependency>

新建一个HelloWorld类,内容如下:

public static void main(String[] args) {
        // 创建模板引擎
        TemplateEngine engine = new TemplateEngine();
        // 准备模板
        String input = "<input type='text' th:value='helloWorld'/>";
        // 准备数据
        Context context = new Context();
        // 调用引擎,处理模板和数据
        String result = engine.process(input, context);
        System.out.println("模板渲染结果==> " + result);

    }

输出结果:

这里模板是HTML常见组件input框,type和value属性。实际上模板引擎在解析模板时,通过‘th:’前缀来锁定要替换的值,就是这里的‘helloWorld’内容。 但是这个数据是写死的,下面我们将数据动态地呈现在页面上。

使用模板数据

方便起见,我使用单元测试的方式来体验thymeleaf的语法规则。

    @Test
    public void test1() {
        // 创建模板引擎
        TemplateEngine engine = new TemplateEngine();
        // 准备模板
        String input = "<input type='text' th:value='${name}'/>";
        // 准备数据
        Context context = new Context();
        context.setVariable("name", "李四");
        // 处理模板和数据
        String result = engine.process(input, context);
        System.out.println("模板渲染结果==> " + result);
    }

${name}  相当于一个占位符,通过我们传递的数据进行替换。

context.setVariable("name", "李四") ,此方法通过占位符(唯一标识),动态设置数据。

输出结果:

这样我们可以提供不同数据,重复利用模板来得到不同结果。

使用模板文件

在resources文件夹下创建html模板,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <div>
        template: <input type="text" th:value="${name}"/>
    </div>
</body>
</html>

编写测试方法:

 @Test
    public void test2() {
        // 创建模板引擎
        TemplateEngine engine = new TemplateEngine();
        // 读取模板文件(在类路径下找要渲染的模板)
        ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
        // 设置引擎使用 resolver
        engine.setTemplateResolver(resolver);
        // 指定数据
        Context context = new Context();
        context.setVariable("name", "李四");
        // 处理模板(注:文件名后缀不能省)
        String result = engine.process("index.html", context);
        System.out.println("模板文件渲染结果==> " + result);
    }

 这个示例说明我们可以通过类路径加载一个模板文件,作为真正的模板,再结合设置的数据将最终结果输出。也就是说如果网页文件中出现大量的类似‘th:’的语法规则,提供不同数据来组合成一个完整的用户视图界面。

输出结果:

 

设置模板前缀和后缀

简化引用模板文件所在路径及文件扩展名操作。其中前缀就是相当于类路径下的一个目录名称,后缀是文件的扩展名。

在resources下新建文件夹templates,再在里面新建模板文件main.html(内容上同)。

编写测试方法:

     @Test
    public void test3() {
        TemplateEngine engine = new TemplateEngine();

        ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
       // 在类路径下的templates目录找后缀为html的main文件
        resolver.setPrefix("templates/");
        resolver.setSuffix(".html");
        engine.setTemplateResolver(resolver);

        Context context = new Context();
        context.setVariable("name", "张三");

        String result = engine.process("main", context);
        System.out.println("模板文件渲染结果==> " + result);

    }

注意别少了“templates/”后边的‘/’!

输出结果:

 

以上是在一个非web项目中如何使用thymeleaf模板引擎,只是简单介绍。 但在开发中大多还是以web工程为主流,所以需学习和掌握基础语法和使用技巧,熟练运用并实践。

<think>嗯,用户想了解Spring Boot和Thymeleaf基本配置与使用。好的,我需要先理清楚这两个技术的基本概念以及它们如何结合使用。首先,Spring Boot是一个用于简化Spring应用开发的框架,可以快速搭建项目,而Thymeleaf是一个服务器端的Java模板引擎,适合用于Web应用中的视图层。 首先,用户可能需要知道如何创建一个Spring Boot项目并集成Thymeleaf。我应该从项目创建开始,比如使用Spring Initializr,添加Thymeleaf依赖。然后介绍配置文件,比如application.properties中的相关设置,比如关闭缓存,这样开发时修改模板不用重启。 接下来是基本使用步骤,比如创建Controller,编写Thymeleaf模板,如何传递数据,以及常用的语法。比如在HTML中使用th:text,表单处理,迭代循环等。可能需要给出代码示例,这样用户更容易理解。 还要注意Thymeleaf的默认目录是classpath:/templates/,所以需要说明HTML文件应该放在哪里。另外,静态资源如CSS、JS通常放在static目录下,这也是需要提到的点。 用户可能遇到的问题比如模板不生效,或者静态资源无法加载,这时候可能需要检查配置是否正确,路径是否正确。另外,Thymeleaf的语法可能有些用户不熟悉,需要简单举例说明常用标签和表达式。 可能还需要提到Thymeleaf的布局功能,比如使用th:fragment和th:replace来复用页面片段,这对实际项目开发很有帮助,但如果是基本配置与使用,可能不需要深入,简单提一下或者作为扩展内容。 还有,是否需要涉及MVC结构?比如Controller到View的数据传递,Model的使用,表单绑定等。这些都是基本使用中常见的部分,应该涵盖。 总结一下,回答的结构应该是:先介绍Spring Boot和Thymeleaf,然后创建项目,添加依赖,配置,接着是Controller和模板的编写,数据传递,常用语法,最后可能给出一个简单示例和常见问题。确保步骤清晰,代码示例正确,并且解释到位,避免用户在实际操作时遇到障碍。</think>以下是 Spring Boot 整合 Thymeleaf基本配置与使用指南,分步骤说明: --- ### **一、环境准备** 1. **创建 Spring Boot 项目** 通过 [Spring Initializr](https://start.spring.io/) 创建项目,勾选: - **Spring Web**(Web 支持) - **Thymeleaf**(模板引擎依赖) 2. **项目结构** 生成的标准目录结构: ``` src ├─main │ ├─java │ │ └─com/example/demo │ │ ├─controller │ │ └─DemoApplication.java │ └─resources │ ├─static # 存放静态资源(CSS/JS/图片) │ ├─templates # 存放 Thymeleaf 模板 │ └─application.properties ``` --- ### **二、基础配置** 在 `application.properties` 中添加: ```properties # 开启模板缓存(生产环境建议true,开发时设为false) spring.thymeleaf.cache=false # 模板编码 spring.thymeleaf.encoding=UTF-8 # 模板后缀(默认.html) spring.thymeleaf.suffix=.html # 模板路径(默认classpath:/templates/) spring.thymeleaf.prefix=classpath:/templates/ ``` --- ### **三、基础使用** #### 1. **编写 Controller** ```java @Controller public class HelloController { @GetMapping("/hello") public String hello(Model model) { // 向模板传递数据 model.addAttribute("message", "Hello Thymeleaf!"); model.addAttribute("list", Arrays.asList("Java", "Python", "C++")); return "hello"; // 对应 templates/hello.html } } ``` #### 2. **创建 Thymeleaf 模板(hello.html)** ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Thymeleaf Demo</title> </head> <body> <!-- 显示普通文本 --> <h1 th:text="${message}"></h1> <!-- 条件判断 --> <div th:if="${not #lists.isEmpty(list)}"> <!-- 循环遍历 --> <ul> <li th:each="item : ${list}" th:text="${item}"></li> </ul> </div> <!-- 链接处理(自动生成上下文路径) --> <a th:href="@{/home}">返回首页</a> </body> </html> ``` --- ### **四、常用语法** #### 1. **变量表达式 `${}`** ```html <p th:text="${user.name}"></p> ``` #### 2. **链接表达式 `@{}`** ```html <link th:href="@{/css/style.css}" rel="stylesheet"> ``` #### 3. **条件判断 `th:if` / `th:unless`** ```html <div th:if="${user.isAdmin}">管理员权限</div> ``` #### 4. **循环遍历 `th:each`** ```html <tr th:each="user : ${users}"> <td th:text="${user.id}"></td> </tr> ``` #### 5. **表单绑定** Controller: ```java @PostMapping("/submit") public String submitForm(@ModelAttribute User user) { // 处理表单数据 return "result"; } ``` 模板: ```html <form th:action="@{/submit}" method="post"> <input type="text" th:name="username"> <button type="submit">提交</button> </form> ``` --- ### **五、静态资源处理** 将 CSS/JS 文件放在 `resources/static` 目录下: ```html <!-- 引用静态资源 --> <script th:src="@{/js/main.js}"></script> <link th:href="@{/css/style.css}" rel="stylesheet"> ``` --- ### **六、布局模板(进阶)** 通过 `th:fragment` 和 `th:replace` 实现页面复用: 1. **定义公共片段(common.html)** ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <th:block th:fragment="head"> <meta charset="UTF-8"> <title>公共标题</title> </th:block> </head> </html> ``` 2. **引用片段** ```html <head th:replace="common :: head"></head> ``` --- ### **七、常见问题** 1. **模板不生效** - 检查文件是否放在 `templates` 目录。 - 确保 Controller 返回的视图名与模板文件名一致。 2. **静态资源404** - 确认文件路径正确(如 `static/css/style.css` 对应 `@{/css/style.css}`)。 3. **Thymeleaf 语法不解析** - 检查 HTML 是否添加命名空间:`xmlns:th="http://www.thymeleaf.org"`。 --- 通过以上步骤,即可快速上手 Spring Boot + Thymeleaf 的基础开发!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值