Themleaf模板基础语法使用介绍

Themleaf模板基础语法使用介绍Themleaf 模板基础语法使用介绍一 Thymeleaf 是什么 Thymeleaf 是一个模板引擎 主要用于编写动态页面 Thymeleaf 是 SpringBoot 官方所推荐使用的 二 Thymeleaf 的作用问题 动态页面技术已经有 JSP 为什么还要用 Thymeleaf 主要原因包括以下几点 使用模块引擎来编写动态页面 让开发人员无法在页面上编写 Java 代码 使得 java 代码和前端代码绝对的分离 SpringBoot 默认整合 Thymeleaf 不需要任何配置直接整合成功 打 jar 包发

Themleaf模板基础语法使用介绍

项目首页地址:https://blog.csdn.net/weixin_/article/details/

一、 Thymeleaf 是什么

二、Thymeleaf的作用

问题:动态页面技术已经有JSP,为什么还要用Thymeleaf?

主要原因包括以下几点:

  1. 使用模块引擎来编写动态页面,让开发人员无法在页面上编写 Java 代码,使得java代码和前端代码绝对的分离。
  2. SpringBoot默认整合Thymeleaf,不需要任何配置直接整合成功,打jar包发布不需要做任何配置。
  3. Thymeleaf相对于其他的模板引擎(如:Freemaker、velocity),有强大的工具支持。
  4. 相对于Jsp页面,执行效率高。

总结:所有JSP可以使用的地方,Thymeleaf都可以使用,并根据Thymeleaf的优势,可以得出结论:Thymeleaf的作用就是取代JSP。

三、Springboot整和Thymeleaf

1、添加Thymeleaf依赖

要想使用Thhymeleaf,首先要在pom.xml文件中单独添加Thymeleaf依赖。

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

2、自定义Thymeleaf文件配置

注: Spring Boot默认存放模板页面的路径在src/main/resources/templates或者src/main/view/templates,这个无论是使用什么模板语言都一样,当然默认路径是可以自定义的,不过一般不推荐这样做。另外Thymeleaf默认的页面文件后缀是.html。

也可以在配置文件中指定自己的模板,这里通过yml配置修改:

spring: thymeleaf: prefix: classpath:/templates/ check-template-location: true cache: false
    suffix: .html
    encoding: UTF-8
    content-type: text/html
    mode: HTML5

prefix:指定模板所在的目录

check-tempate-location: 检查模板路径是否存在

cache: 是否缓存,开发模式下设置为false,避免改了模板还要重启服务器,线上设置为true,可以提高性能。

encoding&content-type:这个大家应该比较熟悉了,与Servlet中设置输出对应属性效果一致。

mode:这个还是参考官网的说明吧,并且这个是2.X与3.0不同。

四、Thymeleaf基本语法介绍

Thymeleaf的主要作用是把model中的数据渲染到html中,因此其语法主要是如何解析model中的数据。

1、属性介绍

在使用Thymeleaf时页面要引入名称空间: xmlns:th=“http://www.thymeleaf.org”

html有的属性,Thymeleaf基本都有,而常用的属性大概有七八个。其中th属性执行的优先级从1~8,数字越低优先级越高。

1)th:text:设置当前元素的文本内容,相同功能的还有th:utext,两者的区别在于前者不会转义html标签,后者会。优先级不高:order=7

2)th:value:设置当前元素的value值,类似修改指定属性的还有th:src,th:href。优先级不高:order=6

3)th:each:遍历循环元素,和th:text或th:value一起使用。注意该属性修饰的标签位置,详细往后看。优先级很高:order=2

4)th:if:条件判断,类似的还有th:unless,th:switch,th:case。优先级较高:order=3

5)th:insert:代码块引入,类似的还有th:replace,th:include,三者的区别较大,若使用不恰当会破坏html结构,常用于公共代码块提取的场景。优先级最高:order=1

6)th:fragment:定义代码块,方便被th:insert引用。优先级最低:order=8

7)th:object:声明变量,一般和*{}一起配合使用,达到偷懒的效果。优先级一般:order=4

8)th:attr:修改任意属性,实际开发中用的较少,因为有丰富的其他th属性帮忙,类似的还有th:attrappend,th:attrprepend。优先级一般:order=5

2、表达式介绍

在这里插入图片描述

2.1 ~{…} 代码块表达式:

作用:用代码块片段操作页面代码。

代码块表达式需要配合th属性(th:insert,th:replace,th:include)一起使用。

th:insert:将代码块片段整个插入到使用了th:insert的HTML标签中

th:replace:将代码块片段整个替换使用了th:replace的HTML标签中

th:include:将代码块片段包含的内容插入到使用了th:include的HTML标签中

2.2 @{…} 链接表达式

作用:提交请求,访问资源。

链接表达式好处:不管是静态资源的引用,form表单的请求,凡是链接都可以用@{…} 。这样可以动态获取项目路径,即便项目名变了,依然可以正常访问。

案例: <!--引入内部图片资源--> th:src="@{/images/weChatInn.jpg}" <!--引入外部资源--> <link th:href="@{/webjars/bootstrap/4.0.0/css/bootstrap.css}" rel="stylesheet"> <!--引入本地资源--> <link th:href="@{/main/css/itdragon.css}" rel="stylesheet"> <!--表单提交路径--> <form class="form-login" th:action="@{/user/login}" th:method="post" > <!--超链接跳转路径附带参数--> <a class="btn btn-sm" th:href="@{/login.html(l='zh_CN')}">中文</a> <a class="btn btn-sm" th:href="@{/login.html(l='en_US')}">English</a> 

2.3 ${…}变量表达式(最常用)

作用:从web作用域里面取到对应的值,作用域包括 request、session、application。

变量表达式有丰富的内置方法(request,response,session等),使其更强大,更方便。

1、后台代码 :返回不同作用域的数据到前端。

@GetMapping("/index") public String showPage(HttpServletRequest request, HttpSession session) { 
    User user1 = new User(1L, "zhangsan", ""); request.setAttribute("user1", user1); User user2 = new User(2L, "lisi", ""); session.setAttribute("user2", user2); User user3 = new User(3L, "wangwu", ""); ServletContext application = request.getServletContext(); application.setAttribute("user3", user3); return "index"; } 

2、 页面代码:接收后台传回来不同作用域的数据。

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org/"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> request: <br/> <div> 编号: <label th:text="${user1.id}"></label><br/> 用户名:<label th:text="${user1.username}"></label> <br/> 密码:<label th:text="${user1.password}"></label><br/> </div> session:<br/> <div> 编号: <label th:text="${session.user2.id}"></label><br/> 用户名:<label th:text="${session.user2.username}"></label> <br/> 密码:<label th:text="${session.user2.password}"></label><br/> </div> application:<br/> <div> 编号:<label th:text="${application.user3.id}"></label><br/> 用户名:<label th:text="${application.user3.username}"></label><br/> 密码:<label th:text="${application.user3.password}"></label><br/> </div> </body> </html> 

2.4 *{…} 选择变量表达式

作用:避免书写重复引用代码,指定对象的方式获取变量。

使用前: request: <br/> <div> 编号: <label th:text="${user1.id}"></label><br/> 用户名:<label th:text="${user1.username}"></label> <br/> 密码:<label th:text="${user1.password}"></label><br/> </div> session:<br/> <div> 编号: <label th:text="${session.user2.id}"></label><br/> 用户名:<label th:text="${session.user2.username}"></label> <br/> 密码:<label th:text="${session.user2.password}"></label><br/> </div> 

等用于:

使用后: request: <br/> <div th:object="${user1}"> 编号: <label th:text="*{id}"></label><br/> 用户名:<label th:text="*{username}"></label> <br/> 密码:<label th:text="*{password}"></label><br/> </div> session:<br/> <div th:object="${session.user2}"> 编号: <label th:text="*{id}"></label><br/> 用户名:<label th:text="*{username}"></label> <br/> 密码:<label th:text="*{password}"></label><br/> </div> 

2.5 #{…} 消息表达式

作用:就是用于对国际化功能的支持。所谓的国际化功能就是指,根据浏览器的编码,返回对应编码的内容的支持。

配置国际化支持 spring.messages.basename=message 

第三步:Thymeleaf 对国际化的支持,消息表达式(取值)

方法一:标签消息表达式取值:<span th:text="#{home.welcome}"></span><br /> 方法二:内嵌消息表达式取值:[[#{home.welcome}]] 

3、常用方法介绍

1.1. Thymeleaf支持四种判断:

1) 第一种:if & unless

 <!-- 如果条件为真,执行标签内的内容 --> <div th:if="${false}"> 天天18 </div> <!-- 如果添加为假,执行标签内的内容 --> <div th:unless="${false}"> 别做梦 </div> 

2)第二种:and、or、not

<div th:if="${true or false}"> 真的18岁 </div> <div th:if="${not false}"> 真的别做梦 </div> 

3)第三种:三目运算符

 <span th:text="true ? '今年不是18岁' : '总算清醒了'"></span> 

4)第四种:switch

<div th:switch="${21}"> <div th:case="16">我今年16岁</div> <div th:case="17">我今年17岁</div> <div th:case="18">我今年18岁</div> <div th:case="*">我年年18岁</div> </div> 

1.2. 循环
Thymeleaf使用th:each来实现循环遍历。

页面代码:后端传回数据 model.addAttribute(“users”, users);

<h3>需求:输出用户信息</h3> <table border="1" cellspacing="0"> <tr> <th>编号</th> <th>姓名</th> <th>密码</th> </tr> <tr th:each="user, iterStat:${users}"> <td th:text="${user.id}"></td> <td th:text="${user.username}"></td> <td th:text="${user.password}"></td> </tr> </table> <h3>需求:输出用户信息,声明状态对象</h3> <table border="1" cellspacing="0"> <tr> <td>当前迭代索引</td> <td>当前迭代序号</td> <td>编号</td> <td>姓名</td> <td>密码</td> </tr> <tr th:each="user, iter:${users}"> <td th:text="${iter.index}"></td> <td th:text="${iter.count}"></td> <td th:text="${user.id}"></td> <td th:text="${user.username}"></td> <td th:text="${user.password}"></td> </tr> </table> 

1.3 时间格式化

<span th:text="${#dates.format(user.date, 'yyyy-MM-dd')}"></span> 或者 <span th:text="${#dates.format(billingForm.startTime,'yyyy-MM-dd HH:mm:ss')}"></span> 

1.4 请求带参数

//带一个参数 <a href="#" th:href="@{/quartz/pause(name=${job.name})}">暂停</a> //带两个参数 <a href="#" th:href="@{/quartz/pause(name=${job.name},group=${job.group})}">暂停</a> 

Themleaf模板基础语法使用介绍已讲解完毕,上面是我对此模板引擎的一些学习笔记和心得,如有不足的地方还请指正,共同交流与学习!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198183.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:36
下一篇 2026年3月26日 下午3:37


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号