[SpringBoot-web系列】前文
SpringBoot-web开发(一): 静态资源的导入(源码分析)
SpringBoot-web开发(二): 页面和图标定制(源码分析)


目录

  • 1. 引入
  • 2. 什么是模板引擎?
  • 3. Thymeleaf
    • 1. 简介
    • 2. 导入Thymeleaf
    • 3. 使用Thymeleaf
    • 4. 简单测试
    • 5. thymeleaf语法
      • 1、th属性
      • 2、标准表达式语法

本文主要介绍SpringBoot给我们推荐的Thymeleaf模板引擎,这是一个高级语言的模板引擎,语法更简单且功能更强大

参考:https://www.jianshu.com/p/7c27c50f24ec

1. 引入

在以前,我们通常将前端交给我们的html页面转成jsp页面,通过jsp轻松实现数据的显示,及前后端交互等。

jsp支持非常强大的功能,能写Java代码,但是springboot默认是不支持jsp的

如果直接用纯静态页面的方式,开发会十分麻烦,这就引入了模板引擎


2. 什么是模板引擎?

模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的[HTML]文档;SpringBoot推荐使用模板引擎

  • 模板引擎有非常多,过去的jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给推荐的Thymeleaf

  • 模板引擎很多,但原理都是如下所示:

  • 当我们写一个页面模板,有些值是我们在后台封装的一些数据,是动态的,我们会写一些表达式取出这些值。模板引擎按照这些数据帮你把这表达式解析、填充到我们指定的位置,最终把这个数据生成一个我们想要的内容写出

  • 所有的模板引擎原理都一致,只是不同模板引擎的语法会不同

  • 模板技术并不是什么神秘技术,干的是拼接字符串的体力活。模板引擎就是利用正则表达式识别模板标识,并利用数据替换其中的标识符

常用模板引擎对比


3. Thymeleaf

1. 简介

Thymeleaf 的主要目标是将优雅的自然模板带到您的开发工作流程中—HTML能够在浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。

  • thymeleaf可处理六种模板,每种模板称为模板模式:

    有两种标记模板模式(HTML、XML)

    三个文本模板模式(TEXT、JAVASCRIPT、CSS)

    无操作模板模式(RAW)

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

Github地址:https://github.com/thymeleaf/thymeleaf

官网文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#what-kind-of-templates-can-thymeleaf-process

  • 可以去https://www.thymeleaf.org/documentation.html下载官方文档

2. 导入Thymeleaf

当前版本为3.x,只需导入下方一个依赖即可

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

导入依赖后,查看jar包是否导入

可以发现自动导入了下面两个包(2.x的版本需要单独导入以下两个依赖)

<dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>

3. 使用Thymeleaf

我们首先得按照SpringBoot的自动配置原理看一下我们这个Thymeleaf的自动配置规则,在按照那个规则,我们进行使用。

我们去找一下Thymeleaf的自动配置类:ThymeleafProperties

可以看到默认的前缀和后缀,就是Thymeleaf的视图解析器

总结:使用thymeleaf只需要导入对应的依赖,然后将html页面放在resource下的templates目录即可,thymeleaf就可以帮我们自动渲染了


4. 简单测试

1、编写一个TestController

package com.zsr.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class TestController {@RequestMapping("/test")public String TestThymeleaf(Model model) {model.addAttribute("msg", "Hello,Thymeleaf");return "test";}
}

2、编写一个测试页面 test.html 放在 templates 目录下

首先引入thymeleaf命名空间约束

xmlns:th="http://www.thymeleaf.org"
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>测试Thymeleaf</title>
</head>
<body>
<!--th:text就是将div中的内容设置为它指定的值-->
<div th:text="${msg}"></div>
</body>
</html>

3、启动项目请求测试

访问http://localhost:8080/test

成功取到值


5. thymeleaf语法

参考:https://www.cnblogs.com/itdragon/archive/2018/04/13/8724291.html

https://www.cnblogs.com/jnba/p/10832878.html

1、th属性

th:text:文本替换;

th:utext:支持html的文本替换。

th:value:属性赋值

th:each:遍历循环元素

th:if:判断条件,类似的还有th:unlessth:switchth:case

th:insert:代码块引入,类似的还有th:replace,th:include,常用于公共代码块提取的场景

th:fragment:定义代码块,方便被th:insert引用

th:object:声明变量,一般和*{}一起配合使用,达到偷懒的效果。

th:attr:设置标签属性,多个属性可以用逗号分隔

2、标准表达式语法

${...} 变量表达式,Variable Expressions

#常用的内置对象
`ctx` :上下文对象
`vars` :上下文变量
`locale`:上下文的语言环境
`request`:(仅在web上下文)的 HttpServletRequest 对象
`response`:(仅在web上下文)的 HttpServletResponse 对象
`session`:(仅在web上下文)的 HttpSession 对象
`servletContext`:(仅在web上下文)的 ServletContext 对象#常用的内置方法
`strings`:字符串格式化方法,常用的Java方法它都有,比如:equals,equalsIgnoreCase,length,trim,toUpperCase,toLowerCase,indexOf,substring,replace,startsWith,endsWith,contains,containsIgnoreCase等
`numbers`:数值格式化方法,常用的方法有:formatDecimal等
`bools`:布尔方法,常用的方法有:isTrue,isFalse等
`arrays`:数组方法,常用的方法有:toArray,length,isEmpty,contains,containsAll等
`lists`,`sets`:集合方法,常用的方法有:toList,size,isEmpty,contains,containsAll,sort等
`maps`:对象方法,常用的方法有:size,isEmpty,containsKey,containsValue等
`dates`:日期方法,常用的方法有:format,year,month,hour,createNow等

@{...} 链接表达式,Link URL Expressions

#{...} 消息表达式,Message Expressions

~{...} 代码块表达式,Fragment Expressions

*{...} 选择变量表达式,Selection Variable Expressions

SpringBoot-web开发(三): 模板引擎Thymeleaf相关推荐

  1. 从零开始学 Python 之 Web 开发 Jinja2 模板引擎

    被之前的文章中,简单介绍了 Python Web 开发框架 Flask,知道了如何写个 Hello World,但是距离用 Flask 开发真正的项目,还有段距离,现在我们目标更靠近一些 -- 学习下 ...

  2. 一头扎进springboot之使用Freemarker模板引擎渲染web视图

    在springboot的官方文档中是不建议在项目中使用jsp这样的技术的,取而代之的是freemark.velocity这样的模板引擎. 首先和大家来说一下这个模板引擎的概念,这里特指用于web开发的 ...

  3. 六十四、SpringBoot中的模板引擎Thymeleaf

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 使用Sprin ...

  4. SpringBoot入门:新一代Java模板引擎Thymeleaf(理论)

    Spring Boot 提供了spring-boot-starter-web来为Web开发予以支持,spring-boot-starter-web为我们提供了嵌入的Tomcat以及SpringMVC的 ...

  5. Spring Boot (四)模板引擎Thymeleaf集成

    一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供XHTM ...

  6. Spring Boot 最佳实践(四)模板引擎Thymeleaf集成

    ## 一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供X ...

  7. Springboot视图解析与模板引擎

    1.视图解析 视图解析:SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染. 视图解析原理流程 1.目标方法处理的过程中,所有数据都会被放在 ModelAndViewCon ...

  8. 模板引擎 Thymeleaf 语法

    模板引擎 Thymeleaf 1. Thymeleaf 简介 Thymeleaf[taɪm lif],百里香叶,是一个流行的模板引擎,该模板引擎采用 Java 语言开发.Java 中常见的模板引擎有 ...

  9. Thymeleaf学习总结(1)——新一代Java模板引擎Thymeleaf

    Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎.类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用 ...

最新文章

  1. SQL语句恢复数据库时一直显示“正在还原”
  2. spring发展历程
  3. python获取程序文件中的全局变量和局部变量的函数
  4. 好程序员分享如何看待CSS中BEM的命名方式?
  5. UINavigationController与UITabbarController的样式
  6. Windows 2012部署Exchange2013
  7. qt制作2048小游戏
  8. 魅族mx4pro刷linux,老树开新花 魅族MX4 Pro刷Flyme 5体验
  9. java各位数字补位,左边补0
  10. Pandas Percentile计算方法
  11. 新司机的黑裙战斗机 篇二:入门—新司机的黑群晖指北——软件篇(上)
  12. 解决win10系统网络连接正常,但是网页打不开的问题
  13. 二、对HEVC/H.265视频编解码器进行隐写的基本思路
  14. 数据库--MYSQL高级(多表),数据库的完整性,约束,数据类型,多表实现 CRUD 操作
  15. [问题记录]Chrome浏览器无法保存或自动填充密码
  16. eva新世纪福音战士_【新世纪福音战士EVA合集】新世纪福音战士EVA游戏大全-ZOL游戏库...
  17. 计算机考证有机构培训吗
  18. 如果修改代码后,又想恢复修改之前的状态怎么办?
  19. 一周IT歪评丨清北BAT落户雄安新区/刘强东穿9块钱大裤衩/青少年沉迷王者日本称不惧怕中国
  20. 低功耗蓝牙在未来几年会占据蓝牙设备的90%市场

热门文章

  1. 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
  2. Go 学习笔记(65)— Go 中函数参数是传值还是传引用
  3. sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
  4. Python学习(四)cPickle的用法
  5. LeetCode简单题之有多少小于当前数字的数字
  6. 使用Keil语言的嵌入式C编程教程(下)
  7. FCN与U-Net语义分割算法
  8. 自动类型转换和强制类型转换
  9. 2021年大数据Flink(二十四):​​​​​​​Allowed Lateness案例演示
  10. 2021年大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey