SpringBoot-web开发(三): 模板引擎Thymeleaf
[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:unless
,th:switch
,th: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相关推荐
- 从零开始学 Python 之 Web 开发 Jinja2 模板引擎
被之前的文章中,简单介绍了 Python Web 开发框架 Flask,知道了如何写个 Hello World,但是距离用 Flask 开发真正的项目,还有段距离,现在我们目标更靠近一些 -- 学习下 ...
- 一头扎进springboot之使用Freemarker模板引擎渲染web视图
在springboot的官方文档中是不建议在项目中使用jsp这样的技术的,取而代之的是freemark.velocity这样的模板引擎. 首先和大家来说一下这个模板引擎的概念,这里特指用于web开发的 ...
- 六十四、SpringBoot中的模板引擎Thymeleaf
@Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 使用Sprin ...
- SpringBoot入门:新一代Java模板引擎Thymeleaf(理论)
Spring Boot 提供了spring-boot-starter-web来为Web开发予以支持,spring-boot-starter-web为我们提供了嵌入的Tomcat以及SpringMVC的 ...
- Spring Boot (四)模板引擎Thymeleaf集成
一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供XHTM ...
- Spring Boot 最佳实践(四)模板引擎Thymeleaf集成
## 一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供X ...
- Springboot视图解析与模板引擎
1.视图解析 视图解析:SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染. 视图解析原理流程 1.目标方法处理的过程中,所有数据都会被放在 ModelAndViewCon ...
- 模板引擎 Thymeleaf 语法
模板引擎 Thymeleaf 1. Thymeleaf 简介 Thymeleaf[taɪm lif],百里香叶,是一个流行的模板引擎,该模板引擎采用 Java 语言开发.Java 中常见的模板引擎有 ...
- Thymeleaf学习总结(1)——新一代Java模板引擎Thymeleaf
Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎.类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用 ...
最新文章
- SQL语句恢复数据库时一直显示“正在还原”
- spring发展历程
- python获取程序文件中的全局变量和局部变量的函数
- 好程序员分享如何看待CSS中BEM的命名方式?
- UINavigationController与UITabbarController的样式
- Windows 2012部署Exchange2013
- qt制作2048小游戏
- 魅族mx4pro刷linux,老树开新花 魅族MX4 Pro刷Flyme 5体验
- java各位数字补位,左边补0
- Pandas Percentile计算方法
- 新司机的黑裙战斗机 篇二:入门—新司机的黑群晖指北——软件篇(上)
- 解决win10系统网络连接正常,但是网页打不开的问题
- 二、对HEVC/H.265视频编解码器进行隐写的基本思路
- 数据库--MYSQL高级(多表),数据库的完整性,约束,数据类型,多表实现 CRUD 操作
- [问题记录]Chrome浏览器无法保存或自动填充密码
- eva新世纪福音战士_【新世纪福音战士EVA合集】新世纪福音战士EVA游戏大全-ZOL游戏库...
- 计算机考证有机构培训吗
- 如果修改代码后,又想恢复修改之前的状态怎么办?
- 一周IT歪评丨清北BAT落户雄安新区/刘强东穿9块钱大裤衩/青少年沉迷王者日本称不惧怕中国
- 低功耗蓝牙在未来几年会占据蓝牙设备的90%市场
热门文章
- 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
- Go 学习笔记(65)— Go 中函数参数是传值还是传引用
- sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
- Python学习(四)cPickle的用法
- LeetCode简单题之有多少小于当前数字的数字
- 使用Keil语言的嵌入式C编程教程(下)
- FCN与U-Net语义分割算法
- 自动类型转换和强制类型转换
- 2021年大数据Flink(二十四):​​​​​​​Allowed Lateness案例演示
- 2021年大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey