畅游Spring Boot系列 — SpingBoot Thymeleaf模板引擎

畅游Spring Boot系列 — SpingBoot Thymeleaf模板引擎

一.模板引擎的基本概念
首先,Thymeleaf模板引擎是什么,简单来说,我们的Web工程肯定要生成动态的页面,之前我们使用JSP,要在页面上显示后台数据的时候使用<% %>或者JSTL调用后台数据,也就是后台直接生成HTML页面+数据的页面,直接传送到前台显示,JSP就是我们接触到的一个模板引擎.
总而言之一句话:模板引擎在服务器端将模板和数据合成,返回最终的html页面,常见的模板引擎有freemarker、velocity、thymeleaf等


对于SpringBoot来说官方建议的模板引擎是Thymeleaf,其实和我们喜闻乐见的JSP相比,就是把<%%>换成了Thymeleaf的标记而已.


二.SpringBoot中Thymeleaf的默认配置
我们先来看一下以前我们在Spring MVC的Controller中最常见的一段代码
@RequestMapping(value="/v", method=RequestMethod.GET)public String success() { return "success"; }
这段代码的意思,相信熟悉Spring MVC的你,都应该知道,无非就是页面输入/v,Spring MVC的视图解析器就会找到返回值success,这里的返回值其实就应该是我们已经在Spring MVC配置文件中配置好的哪个文件夹下的以success开头,并且以相关后缀结束的文件,比如: xxx/xxx/success.html
所以针对于SpringBoot,这些东西肯定是已经配置好了的,不过一定要记住,我们的SpringBoot是约定大于配置的.
首先,SpringBoot支持的后台模板引擎不再是JSP,而是Thymeleaf
其次,Thymeleaf的相关配置也已经是约定好了的
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties
在这个类中有很关键的两句配置代码
public static final String DEFAULT_PREFIX = "classpath:/templates/";public static final String DEFAULT_SUFFIX = ".html";
默认所有的模板文件,都应该放在类资源下的templates文件夹
默认所有的模板文件,都应该以.html后缀结尾


三.Thymeleaf的使用
当然,我们现在如果只是在Controller中这么写是没有任何作用的,我们还需要按照约定做以下几步

  1. 配置pom.xml,加载thymeleaf的starter

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

  1. 在工程的resources资源文件夹下创建templates文件夹,所有的模板文件都应该放在这个文件夹下面
  2. 创建.html模板文件,其实和一般的html没区别,但是最好在html文件开头添加上Thymeleaf的名称空间,不导入其实也没影响,不过在写页面的时候,就没有提示了

<html lang="en" xmlns:th=" thymeleaf.org">
现在工程的结构,基本上是这个样子:


现在的HTML页面也很简单,除了添加的一句代码,和一般的HTML页面任何区别

我们写一段简单代码来测试一下,首先修改HelloController.java文件
HelloController.java
@Controllerpublic class HelloController { @RequestMapping(value="/v", method=RequestMethod.GET) public String success(Model model) { model.addAttribute("username", "SpringBoot"); return "success"; } }
在HelloController的代码中,我添加了Model对象参数,往页面传值username,接下来,我们在success.html页面,使用Thymeleaf的语法来接收参数
success.html
<!DOCTYPE html><html lang="en" xmlns:th=" thymeleaf.org"><head><meta charset="UTF-8" /><title>Insert title here</title></head><body><h1>成功!</h1>你好:<span th:text="${username}"></span></body></html>
页面显示:


正确得到了Controller中传递的值,这里使用Thymeleaf的语法th:text="${xxx}"

四.Thymeleaf 3
按照我的例子走下去,如果稍微不留意,估计你的页面就会报错,错误页面大概是这个样子


意思是success页面第6行有错误,success页面不是我们的模板页面吗?而且第6行我们也没有写什么东西啊,为啥会报错?

注意,这其实是thymeleaf自身的问题,在thymeleaf 2.x版本,要求HTML中元素标签必须要闭合,但是在3.x版本中已经不存在该问题了
所以,我们只需要将thymeleaf的版本改为3.x就可以了.
怎么改,在官方文档中有详细的说明,在我们pom.xml文件的properties属性中,加入下面的代码就可以了
<properties> <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version></properties>
这里的thymeleaf.version就是thymeleaf的版本号,当然现在thymeleaf的版本可能已经不止3.0.2了,我们可以到GitHub上查看thymeleaf的最新版本
thymeleaf-layout-dialect其实是thymeleaf的布局管理器,他和thymeleaf.version相对于,所以,我们同样可以再GitHub上找到thymeleaf-layout-dialect最新版本
最终,我们先阶段能够用到最新的thymeleaf 3的版本,可以写成下面这个样子:
<properties> <thymeleaf.version>thymeleaf-3.0.11.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.3.0</thymeleaf-layout-dialect.version></properties>
关于Thymeleaf的相关语法,这里就不再做一一介绍了,我们后面通过案例,大家照着做一下,慢慢就熟悉了,这些东西也不需要专门去学习,这里列举Thymeleaf语法常用的表达式


五.Thymeleaf基本语法
1.属性优先权 th:*
简单来说,这个其实就和JSTL<c:when>、<c:choose>、<c:forEach>、<c:forTokens>、<c:if>、<c:set>…等等标签类似
具体相关内容如下表:

2.表达式语法
其实和EL表达式是一个意思,只不过划分的更加详细

代做工资流水公司包头入职流水模板汕头房贷银行流水 代开包头流水样本舟山薪资流水打印桂林贷款流水公司厦门收入证明代开绍兴流水账单开具宿迁做工作收入证明温州银行流水账代开烟台制作车贷工资流水西宁查银行流水单德阳个人工资流水 多少钱烟台工资流水app截图报价宁德公司流水代开赣州代做银行流水单江门查询签证流水西安打企业对私流水大连房贷工资流水 报价湛江代开背调工资流水海口房贷流水图片桂林做企业银行流水石家庄办理企业对私流水济南贷款工资流水 样本南阳开入职银行流水襄阳车贷流水代开南宁房贷收入证明多少钱衡阳银行流水单公司阜阳办理背调流水济南离职证明代做温州开工资流水单香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化