前端模板引擎Thymeleaf快速入门
文章目录
- 1. Thymeleaf特点
- 2. 提供数据
- 3. 引入启动器
- 4. 静态页面
- 5. 测试
- 6.模板缓存
1. Thymeleaf特点
简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较于其他的模板引擎,它有如下四个极吸引人的特点:
- 动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
- 开箱即用:它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、改jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
- 多方言支持:Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
- 与SpringBoot完美整合,SpringBoot提供了Thymeleaf的默认配置,并且为Thymeleaf设置了视图解析器,我们可以像以前操作jsp一样来操作Thymeleaf。代码几乎没有任何区别,就是在模板语法上有区别。
2. 提供数据
编写一个controller方法,返回一些用户数据,放入模型中,将来在页面渲染
@GetMapping("all")public String all(Model model){//查询用户List<User> users = this.userService.queryUsers();//放入模型model.addAttribute("users",users);// 返回模板名称(就是classpath:/templates/目录下的html文件名)return "users";}
3. 引入启动器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
SpringBoot会自动为Thymeleaf注册一个视图解析器:
与解析JSP的InternalViewResolver类似,Thymeleaf也会根据前缀和后缀来确定模板文件的位置:
- 默认前缀:
classpath:/templates/
- 默认后缀:
.html
所以如果我们返回视图:users
,会指向到 classpath:/templates/users.html
一般我们无需进行修改,默认即可。
4. 静态页面
新建一个users.html文件在templates文件夹中
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>首页</title><style type="text/css">table {border-collapse: collapse; font-size: 14px; width: 80%; margin: auto}table, th, td {border: 1px solid darkslategray;padding: 10px}</style>
</head>
<body>
<div style="text-align: center"><span style="color: darkslategray; font-size: 30px">欢迎光临!</span><hr/><table class="list"><tr><th>id</th><th>姓名</th><th>密码</th></tr><tr th:each="user : ${users}"><td th:text="${user.id}">1</td><td th:text="${user.name}">张三</td><td th:text="${user.pwd}">123456</td></tr></table>
</div>
</body>
</html>
${}
:这个类似与el表达式,但其实是ognl的语法,比el表达式更加强大th-
指令:th-
是利用了Html5中的自定义属性来实现的。如果不支持H5,可以用data-th-
来代替th:each
:类似于c:foreach
遍历集合,但是语法更加简洁th:text
:声明标签中的文本- 例如
<td th-text='${user.id}'>1</td>
,如果user.id有值,会覆盖默认的1 - 如果没有值,则会显示td中默认的1。这正是thymeleaf能够动静结合的原因,模板解析失败不影响页面的显示效果,因为会显示默认值!
- 例如
5. 测试
6.模板缓存
Thymeleaf会在第一次对模板解析之后进行缓存,极大的提高了并发处理能力。但是这给我们开发带来了不便,修改页面后并不会立刻看到效果,我们开发阶段可以关掉缓存使用:
# 开发阶段关闭thymeleaf的模板缓存
spring.thymeleaf.cache=false
在Idea中,我们需要在修改页面后按快捷键:Ctrl + Shift + F9
对项目进行rebuild才可以。
前端模板引擎Thymeleaf快速入门相关推荐
- java velocity是什么意思_基于 Java 的模板引擎Velocity快速入门
最近使用Velocity模板引擎,写一个maven项目Coding生成工具. 对基于Java的模板引擎Velocity的demo总结如下: Step1. 创建Maven项目,添加如下velocity的 ...
- swig模板 PHP,nodejs前端模板引擎swig入门
相对于jade,我还是更喜欢swig前端模板引擎,jade虽然语法简练高效了不少,但是在我这最大的问题是 他没有一个html该有的样子... 所以我还是决定使用swig,页面结构,样子都是熟悉的样子, ...
- java 前端模板_前端模板引擎入门
模板引擎 模板引擎 起到 数据和视图分离的作用, 模板对应视图, 关注如何展示数据, 在模板外头准备的数据, 关注那些数据可以被展示. 后端模板引擎 freemarker 如下介绍, java后台的 ...
- springboot模板引擎_Spring Boot实战:如何搞定前端模板引擎?
作者:liuxiaopeng 链接:https://www.cnblogs.com/paddix/p/8905531.html 前言 虽然现在很多开发,都采用了前后端完全分离的模式,即后端只提供数据接 ...
- Spring Boot (四)模板引擎Thymeleaf集成
一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供XHTM ...
- 六十四、SpringBoot中的模板引擎Thymeleaf
@Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 使用Sprin ...
- Spring Boot 最佳实践(四)模板引擎Thymeleaf集成
## 一.Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用.它更适合在基于MVC的Web应用程序的视图层提供X ...
- JavaWeb~模板引擎Thymeleaf总结
文章目录 模板引擎是什么 有哪些常见的模板引擎 Thymeleaf使用流程 常用标签 链接表达式@{...} 变量表达式${...} 选择变量表达*{...} 消息表达式#{...}(了解) 回顾:几 ...
- 模板引擎 Thymeleaf 语法
模板引擎 Thymeleaf 1. Thymeleaf 简介 Thymeleaf[taɪm lif],百里香叶,是一个流行的模板引擎,该模板引擎采用 Java 语言开发.Java 中常见的模板引擎有 ...
最新文章
- 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed
- mybatis-plus自定义mapper报org.apache.ibatis.binding.BindingException: Invalid bound statement(not found)
- php面向对象的概括图解,深入分析php之面向对象
- VLM:Meta AI CMU提出任务无关视频语言模型视频理解预训练VLM,代码已开源!(ACL 2021)...
- ideal如何快速导入import_【MAC版】pr预设安装目录?pr如何快速批量导入lut
- 十大思维导图软件推荐
- CTC算法详解之训练篇
- CRM客户管理系统有哪三大功能
- 往超级表格导入Excel,让数据处理不再繁杂!
- android studio 或者 idea 前进 后退 箭头图标添加到 工具栏
- compressGOP函数代码跟踪
- 【干货】你常用的5种地图数据汇总对比,值得收藏~
- 为何NB-LOT 覆盖比较广
- 【英文版+中文版】2021年美国大学生数学建模赛题发布!!!
- CSS实现DIV垂直水平居中
- 易信简单开启邮件提醒
- “聚光灯”下的数梦工场 首提“新型互联网”战略
- 增量式编码器(AB型、ABZ型)
- indexedDB常见坑人错误
- Jenkins部署发布(基于svn、ant)