主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易协作。Thymeleaf能够处理HTML,xml,Js,css甚至纯文本。
Thymeleaf是原生的,不依赖于标签库。它能够在接受原始HTML的地方进行编辑和渲染。因为它没有与Servlet规范耦合,因此Thymeleaf模板能进入jsp所无法涉及的领域。
文档支持和页面原型支持;没法把jsp改成html,所以有了thymeleaf;所以产品经理所制定的页面后端程序员很难进行复用;画好的原型页面thymeleaf能够直接使用;所以有了模板引擎,thymeleaf>freemarker;【这是单体项目特点】
【分布式的,前后端分离的】thymeleaf就没有特点了;
××××××××××××××××××××××××基本使用thymeleaf
它的html页面不允许直接访问,需要浏览器进行渲染;
在运行时,springboot的自动配置会发现在Thymeleaf在类路径中,因为会为SpringMVC创建支撑Thymeleaf视图的bean。
像Thymeleaf这样的视图库在设计时与特定的web框架解耦的。这样的话它们就无法感知Spring的模型对象,因此无法与控制器放到Model中的数据协同工作。但是它可以与Servlet的request属性进行协作。所以,在Spring将请求转换到视图之前,它会把模型数据复制到request属性中,Thymeleaf和其他的视图模板就能够访问到它们了。
文本显示
循环
链接
表单
<span th:text=”pshd”>hx</span> <span th:”${msg}”> 从controller来 | 输出:pshd,标签中的内容会被替换 输出了变量的值; |
Th:value | 可将一个值放入到input的标签的value中 |
内置对象:可以在模板中直接使用,用# |
|
${#strings.isEmpth(key)} | 判断字符串是否为空ture/false |
${#strings.contains(msg,’T’)} | 判断字符串是够包含指定字符串 |
${strings.strtsWith(msg,’a’)} | 判断当前串是否以子串开头 |
${#strings.length(msg)} | 返回字符串长度 |
${#strings.indexOf(msg,’h’)} | 查找子串的位置,返回其下标/-1 |
${#strings.substring(msg,2)} ${#strings.substring(msg,2,5)} |
|
${#dates.format(key)} | 格式化日期为浏览器默认格式标准 |
${#dates.format(key,’yyyy/MM/dd’)} ${#dates.year(key)} ${#dates.month(key)} ${#dates.day(key)} |
|
th:if | 条件判断 |
th:switch/th:case | 多个匹配,显示第一条配置;没有default,但是th:case=”*”等同 |
Th:each 状态变量: Index:当前迭代器的索引从0开始 Count:当前迭代对象的计数从1开始 Size:被迭代对象的长度 Odd/even:布尔值,当前循环是否是偶数/奇数 从0开始 First:布尔值,当前循环的是否是第一条 Last:布尔值,当前逊汗的是否是最后一条 | 迭代器,用户循环迭代集合 |
|
|
springboot支持模板的方案
模板 | springboot的starter的依赖 |
FreeMarker | spring-boot-starter-freemarker |
Groovy Templates | spring-boot-starter-groovy-templates |
java server page | 由tomcat和jetty提供 |
Mustache | spring-boot-starter-mustache |
Thymeleaf | spring-boot-starter-thymeleaf |
缓存模板
默认情况下,模板只有在第一次使用的时候解析一次,解析的结果会被后续的请求所使用。对于生产环境来说,这是一个很棒的特性,它能防止每次请求时多余的模板解析过程,因此有助于提升性能。但是,在开发期就太不好了,无法看到页面的修改效果。因此有一种方法可以禁用缓存。我们只需在application.properties中添加spring.thymeleaf.cache=false。唯一需要注意的是,在将应用部署到生产环境之前,这一行代码一定要删除。另一种更简单的方式是单独配置一个测试环境的profile,打包时改成正式环境的配置文件即可。
模板 | 启用缓存的属性 |
FreeMarker | spring.freemarker.cache |
Groovy Templates | spring.groovu.template.chche |
Mustache | spring.mustache.cache |
Thymeleaf | spring.thymeleaf.chche |