带你了解什么是Thymeleaf(实操)

thymeleaf入门简介 定义 Thymeleaf 是一个模板引擎,由于SpringBoot默认使用Thymeleaf,现逐步取代jsp。 特点 动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,无网络显示静态内容,有网络用后台得到数据替换静态内容。支持 html 原型,浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。 与SpringBoot完美整合,springboot默认整合thym 阅读详情
AI摘要

本文介绍了Thymeleaf,它是现代服务器端Java模板引擎,适用于Web和独立环境。具有动静分离、开箱即用等特点。还详细说明了其使用方法,包括入门步骤、创建模板、使用文本、标准表达式语法和条件判断等内容,页面使用了Bootstrap样式。

在这里插入图片描述

一、前言

①什么是Thymeleaf?

Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。
Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这一目标,它以自然模板的概念为基础,将其逻辑注入模板文件,其方式不会影响模板被用作设计原型。这改善了设计沟通,缩小了设计和开发团队之间的差距。
Thymeleaf也从一开始就设计了Web标准 - 特别是HTML5 - 允许您创建完全验证的模板,如果您需要的话。

②特点

动静分离: Thymeleaf选用html作为模板页,这是任何一款其他模板引擎做不到的!Thymeleaf使用html通过一些特定标签语法代表其含义,但并未破坏html结构,即使无网络、不通过后端渲染也能在浏览器成功打开,大大方便界面的测试和修改。
开箱即用: Thymeleaf提供标准和Spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、改JSTL、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。

二、Thymeleaf的使用

1、完成Thymeleaf入门

主要步骤:添加thymeleaf的依赖,创建一个控制类controller,在templates下创建一个html页面即可。

⑴新建一个SpringBoot项目demo_thymeleaf

点击File->Project ->Srping Initializr点击下一步(Next)
在这里插入图片描述

完善信息后-点击下一步-点击完成即可
在这里插入图片描述

注意:需要配置下自己本地Maven地址

⑵项目-完整代码

pom.xmll

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hn.yuan</groupId>
    <artifactId>demo_thymeleaf</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo_thymeleaf</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--添加thymeleaf的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--spring项目启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--通过注解消除实际开发中的样板式代码-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--spring项目测试启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--mybatis-plus启动器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--mysql数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <!--代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--模板引擎-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

application.properties层

#配置端口号;
server.port=8081
#配置数据源;
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/yuan_productlist?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

#关闭 springboot 中 thymeleaf 中的缓存, 默认为 true;
spring.thymeleaf.cache=false

controller层

package com.hn.yuan.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/roles")
public class ListController {

    @GetMapping("/list")
    public String getList(Model model){
        model.addAttribute("msg","Thymeleaf");
        return "list";
    }
}

templates文件夹下的 list.html页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<!--导入命名空间:namespace = ns-->
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf模版集成完毕!</title>
    <!--引入bootstrap框架相关的样式; -->
    <link rel="stylesheet" href="/bootstrap/css/bootstrap.css"/>
    <script src="/bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h1>Thymeleaf模版集成完毕!</h1>
        </div>
        <div class="panel-body">
            <table class="table table-striped table-bordered table-hover table-condensed text-center">
                <tr>
                    <td>角色编号</td>
                    <td>角色名称</td>
                    <td>操作</td>
                </tr>
                <tr>
                    <td th:text="1"></td>
                    <td th:text="admin"></td>
                    <td>
                        <a href="#" class="btn btn-success">修改</a>
                        <a href="#" class="btn btn-danger">删除</a>
                    </td>
                </tr>
            </table>
        </div>
        <div class="panel-footer text-right">
                Thymeleaf模版集成完毕!
        </div>
    </div>
</div>
</body>
</html>

页面中我使用了 bootstrap样式,可自行下载,放入static文件夹下。官网下载地址分享
也可进入百度网盘分享地址:样式分享
在这里插入图片描述

在这里插入图片描述

⑶效果图

项目架构:
在这里插入图片描述

访问地址:http://localhost:8081/roles/list
在这里插入图片描述

2、对Thymeleaf的基础认识

⑴创建模板

创建一个 HTML 模板文件:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Index Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="${message}">Welcome to BeiJing!</p>
</body>
</html>

通过引入 Thymeleaf 命名空间。th:text用于处理p标签体的文本内容。该模板文件直接在任何浏览器中正确显示,浏览器会自动忽略它们不能理解的属性th:text。但这不是一个真正有效的 HTML5 文档,因为 HTML5 规范是不允许使用th:*这些非标准属性的。我们可以切换到 Thymeleaf 的data-th-*语法,以此来替换th:*语法:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Index Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p data-th-text="${message}">Welcome to BeiJing!</p>
</body>
</html>

HTML5 规范是允许data-*这样自定义的属性的。th:*和data-th-*这两个符号是完全等效且可以互换的。但为了简单直观和代码的紧凑性,本文采用th:*的表示形式。

⑵使用文本

首先介绍两个最基础的th:*属th:text和th:utext,它们都是用于处理文本消息内容。
th:text
在标签体中展示表达式评估结果的文本内容:

1

使用外部化的文本内容:

1

Welcome to BeiJing!

当它作为静态文件直接运行时,浏览器会自动忽略它不能识别的th:text属性,而显示

标签体的文本内容Welcome to BeiJing!
当它作为模板文件运行在服务器端时,th:text属性的具体值将会替换

标签体的文本内容。
th:utext
属性th:utext与th:text的区别在于:

  • th:text默认会对含有 HTML 标签的内容进行字符转义;
  • th:utext(Unescaped Text)则不会对含有 HTML 标签的内容进行字符转义;

假设:message = “Welcome to BeiJing!”。
使用th:text属性:

1

th:text效果:Welcome to BeiJing!
使用th:utext属性:

1

th:utext效果:Welcome to BeiJing!

⑶标准表达式语法

Thymeleaf 提供了非常丰富的标准表达式语法,总共有 8 大类:

  • 简单表达式
  • 字面值
  • 文本操作
  • 算术运算
  • 布尔运算
  • 比较和相等
  • 条件运算
  • 无操作符
⑷条件判断

条件判断语句有三种,分别是:th:if、th:unless、th:swith。

想要了解更多

请点击 转载链接

在这里插入图片描述

各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯放弃。

免责声明:本文章仅用于学习参考

Thymeleaf简介 Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。 阅读详情

相关推荐

Thymeleaf(看这一篇就够了)

它可以轻易的与SpringMVC等Web框架进行集成作为Web应用的模板引擎。Thymeleaf在有服务和无服务的环境下皆可运行,它即可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。当有数据返回到页面时,Thymeleaf会动态地替换掉静态内容,使页面动态显示。Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。Thymeleaf提供了一些内置对象可以操作数据,内置对象可直接在模板中使用,这些对象是以#引用的。

m0_74436895的博客 2975

Thymeleaf模版引擎

1.Thymeleaf介绍 ​ thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。 Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymele...

qq_42873808的博客 1287

Thymeleaf常用写法,带实例,最全!

Thymeleaf: 市面上主流的 Java 模板引擎有:JSP、Velocity、Freemarker、Thymeleaf JSP本质也是模板引擎,Spring Boot 官方推荐使用 “Thymeleaf”模板引擎 Thymeleaf 官网:https://www.thymeleaf.org/ Thymeleaf 在Github 的主页:https://github.com/thymeleaf...

Smile_Sunny521的博客 4805

Thymeleaf教程(10分钟入门)

Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面 。 1. Thymeleaf 简介 Thymeleaf 是新一代 Java 模板引擎,与 Velocity、FreeMarker 等传统 Java 模板引擎不同,Thyme

youandme520的专栏 2万+

SpringBoot整合Thymeleaf

大家好,我是Leo,今天我们来学习Thymeleaf,如果你对Thymeleaf比较陌生也不要紧,它很容易学习与理解,并有着自己鲜明的特色。什么是Thymeleaf?Thymeleaf 官网是这么解释的:Thymeleaf is a modern server-side Java template engine for both web and standalone environments.译过来就是:Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎Thymeleaf。

分享思想,留下痕迹。 2669

2023年LitCTF web组wp

1、导弹迷踪2、1zjs3、php是世界上最好的语言!!4、Ping5、我Flag呢?7、作业管理系统8、Vim yyds10、这是什么?SQL!注一下!11、Flag点击就送!12、就当无事发生13、彩蛋。

m0_74160536的博客 1592

带你了解Thymeleaf

文章目录1、简单了解Thymeleaf2、SpringBoot整合Thymeleaf2.1、导入依赖2.2、配置.properties文件2.3、配置语法提示3、Thymeleaf常用语法3.1、表达式使用3.2、赋值取值3.3、th常用标签 1、简单了解Thymeleaf   Thymeleaf简单的说,是一种模板引擎。模板引擎就是把模板文件和数据渲染成HTML显示的一种工具。具体可以看下图。常见的模板引擎有Thymeleaf、Freemarker等,而Spring官方推荐使用的是Thymeleaf这种模

程序猿小龙的博客 385

512分辨率万能遮罩模型实战指南:从下载到高精度应用

本文提供了512分辨率万能遮罩模型的完整实战指南。该模型经过超过540万次迭代,专门优化了对头发、手、眼睛等复杂区域的识别。文章详细介绍了从可靠渠道下载、环境部署、使用DF_ICE工具批量应用遮罩,到利用XSeg Editor进行高精度精修的全流程,旨在帮助用户显著提升AI换脸合成视频的质量与效率。

y2z3a4b5c的博客 1165

带你用两万字了解Thymeleaf

带你用两万字了解Thymeleaf

GeGe&YoYo的博客 438

从零实现机械臂抓取仿真:用MoveIt+Gazebo完成物体pick&place全流程

本文详细介绍了如何使用ROS的MoveIt框架与Gazebo仿真环境,从零构建机械臂抓取仿真系统。涵盖环境搭建、MoveIt配置、Gazebo集成、抓取动作实现等全流程,帮助开发者掌握机械臂控制的核心技术,实现高效的pick&place任务。

weixin_29250403的博客 477

使用Eggjs做服务端获取微信小程序云开发数据库的access_token

最近自己想写了一个微信小程序,恰巧里面有个云开发,恰巧里面有个数据库,那懒人的我,就直接用云开发里面的数据库了,做测试或者正式也好,对于刚开始来说,免费的配额是够用的。 后来想到在小程序云开发上面的数据怎么看才方便?刚好微信小程序有一个服务端API,那就方便很多了,那就直接敲个服务端来获取云开发上数据库的数据出来到自己的后台上面,那以后管理起来也方便很多。 看了一下服务端api之后,发现有三个重要...

kalenE992的博客 1705

ThymeLeaf简单介绍

大家好,我是IT修真院,一枚正直纯洁善良的如刚入门的Java程序员,今天跟大家分享一下修真院官网JAVA任务十,深度思考中的知识点———— 1.知识背景 Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等, 它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。与其它模板引擎相比, T...

creatill的博客 2万+

【C语言】字符常量详解

字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。

LuckiBit 5020

springboot+thymeleaf+pageHelper带条件分页查询

html层 <div> <a class="num"><b th:text="'共 '+ ${result.resultMap['pages']}+ ' 页'"></b></a> <a class="num" th:if="${result.resultMap['hasPreviousPage']} == tr...

weixin_30521161的博客 836

GEE初学:谷歌地球引擎GEE入门指南(最新注册全流程)

本教程详细介绍了谷歌地球引擎(GEE)的注册与基础操作流程。主要内容包括:1)非商业账号注册步骤,需提供学术机构凭证和研究目的;2)Google Cloud项目创建与API激活;3)Shapefile文件上传方法及资源ID获取;4)JavaScript脚本编写与地图可视化实现。教程通过代码示例展示了两种多边形显示方式(填充和轮廓模式),并强调了GEE的云端处理优势,包括免费访问40多年卫星数据、无需本地高性能硬件等特点。整个流程从账号注册到首个地图可视化完成约需10-15分钟,适合遥感分析初学者快速入门。

此星光明博客 2143

机器视觉应用工程师职位深度解析与面试指南

广东奥普特科技招聘机器视觉应用工程师,要求大专以上理工科专业背景,熟悉C/C++或PLC编程,具备自动化设备调试经验。岗位职责包括视觉项目方案评估、系统安装调试、售后技术支持及异常处理,需接受外派出差。该职位面向专业对口的应届生或实习生,强调动手能力、沟通技巧和吃苦耐劳精神。机器视觉工程师需掌握图像处理算法、硬件配置等核心技术,在工业自动化领域具有良好发展前景。求职者应注重编程能力和实践经验的积累,以胜任这一技术密集型岗位。

郑伟强dev的专栏 433

Spring Boot——Thymeleaf

通俗易懂地讲解Thymeleaf的基本语法以及其使用规则,用通俗易懂的文笔讲解Thymeleaf的使用。

一心同学的博客 2万+

【忍者算法】从拼积木到最长连续序列:一道别出心裁的数组题目|LeetCode 128 最长连续序列

本题核心:通过预处理数据结构来优化查找!

忍者算法的博客 738

SpringBoot 使用 Thymeleaf 如何发送带模板的Email邮件

springboot+Thymeleaf实现发送Email模板邮件 如何在Spring Boot 应用中发送邮件以及使用非常简单强大的Thymeleaf模板引擎来制作邮件内容。 一、授权码 常用的电子协议有POP3,SMTP,IMAP,协议的具体区别就不进行详细介绍了。这里选择smtp协议进行演示。登录邮箱,在设置中找到协议地址,点击开启。授权码只会显示一次,需要保存好。 下面是126邮箱对应的三种协议主机地址: smtp.126.com pop.126.com imap.126.com 二、导入pom依

花开半夏 · 流年似水 8547

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Thymeleaf入门了解

一、简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较于其他的模板引擎,它有如下四个极吸引人的特点: 动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的...

qq_40544419的博客 278

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

干掉JSP!!!一文带你了解模板引擎技术-Thymeleaf

1. 认识thymeleaf 1.1. 模板技术 把页面中的静态数据替换成从后台数据库中的数据。这种操作用jsp就可以实现。但是Spring boot 的架构不推荐使用Jsp,而且支持也不好,所以如果你是用springboot的话,一般使用Freemarker或者Thymeleaf。 官方推荐使用Thymeleaf。 1.2. 简介 官方网站:https://www.thymeleaf.org/index.html 教程:https://www.thymeleaf.org/documentation.ht

cybxh的博客 703

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Thymeleaf

SpringBoot的Thymeleaf技术

qq_48788523的博客 1万+

Thymeleaf了解

一.【使用】 是JAVA开发的模板技术,在服务器端运行,把处理后的数据发送给浏览器,模板是在视图层工作,显示数据 Thymeleaf是基于html语言,以Html标签为载体,官方推荐使用Thymeleat来替代JSP技术 二.【实例1】 <body> <h3 th:text="${data}">显示数据</h3> </body> 在Controller层里在Model里面以data为键的键值对存了数据,所以在页面里面获取,同时这个Thymeleaf的

m0_55545545的博客 434

10分钟带你学会thymeleaf

文章目录引入命名空间HTML中的使用1. 表达式(和下面的设置属性值一起使用)2. 支持的字面量3. 设置属性值1. 设置自定义属性值 th:attr2. 设置html原生属性值3. 替换所在标签内的文本内容 th:text4. 替换所在标签内的文本内容(会解析html) th:utext4. 迭代器 th:each5. 条件语句6. 内联(写在开始标签和结束标签之间)7. 组件定义组件:其他页面引入组件:组件传参组件的局部替换JavaScript中的使用CSS中的使用内置对象工具类格式化时间 引入命名空间

浅ピ筱的博客 1483

初步了解Thymeleaf模板引擎

Thymeleaf是什么? Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。 Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这一目标,它以自然模板的概念为基础,将其逻辑注入模板文件,其方式不会影响模板被用作设计原型。这改善了设计沟通,缩小了设计和开发团队之间的差距。 Thymeleaf也从一开始就设计了Web标准 - 特别是HTML5 - 允许您创建完全验证的模板,如果您需要的话。

weixin_50253745的博客 333

ThymeLeaf失效原因

Thymeleaf失效原因记录

m0_47909382的博客 2544
上一篇: 带你了解什么是Nginx(实操反向代理-负载均衡)
下一篇: 实战-完整代码答题系统
源的世界
博客等级 码龄6年 253粉丝 53原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值