Thymeleaf模板引擎的主要目标是将优雅的自然模板带到开发工作流程中,并将HTML在浏览器中正确显示,并且可以作为静态原型,让开发团队能更容易地协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。
长期以来,jsp在视图领域有非常重要的地位,随着时间的变迁,出现了一位新的挑战者:Thymeleaf,Thymeleaf是原生的,不依赖于标签库.它能够在接受原始HTML的地方进行编辑和渲染.因为它没有与Servelet规范耦合,因此Thymeleaf模板能进入jsp所无法涉足的领域。
Thymeleaf在Spring Boot项目中放入到resources/templates中。这个文件夹中的内容是无法通过浏览器URL直接访问的(和WEB-INF效果一样),所有Thymeleaf页面必须先走控制器。
整合步骤
org.springframework.boot spring-boot-starter-thymeleaf 2.5.4
Thymeleaf默认配置前缀和后缀,所以我们在返回跳转页面时不用加前缀和后缀,只写文件名就行
@Controllerpublic class ThymeleafController {@RequestMapping("showIndex")public String showIndex(){return "index";}}
Thymeleaf通过标准变量表达式完成数据的展示和处理
1 标准变量表达式必须依赖标签,不能独立使用
2 标准变量表达式一般在开始标签中,以 th开头
3 语法为:
4 表达式中可以通过${}取出域中的值并放入标签的指定位置
5 ${}在这里不能单独使用,必须在 th:后面的双引号里使用
为了有提示,修改html页面中标签为:
提示例如:
th:text属性 :向HTML标签内部输出信息
如:controller
@RequestMapping("showIndex")public String showIndex(Map map){map.put("msg", "testMessage");return "index";}
页面代码
th:value :表单元素,设置HTML标签中表单元素value属性时使用
th:if : 条件判断
会显示
th:each:循环遍历
示例中u为迭代遍历。
controller:
public class ThymeleafController {@Autowiredprivate EmpService empService;@RequestMapping("/showEmp")public String showEmp(Map map) {List empList = empService.findAll();map.put("empList", empList);map.put("emp", empList.get(0));return "showEmp";
页面模板代码
1.
2.
3.
4.
5. Title
6.
17.
18.
19. 展示单个员工信息:
20.
21. 工号:
22. 姓名:
23. 职务:
24. 上级:
25. 入职日期:
26. 工资:
27. 补助:
28. 部门号:
29.
30.
31.
32.
33. 工号:
34. 姓名:
35. 职务:
36. 上级:
37. 入职日期:
38. 工资:
39. 补助:
40. 部门号:
41.
42.
43.
44.
45. 索引
46. 序号
47. 总人数
48. 偶数索引?
49. 奇数索引?
50. 第一?
51. 最后?
52. 工号
53. 姓名
54. 职务
55. 上级
56. 入职日期
57. 工资
58. 补助
59. 部门号
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
页面效果
标准变量表达式支持的运算符
1.算数运算符
算术运算:+ , - , * , / , %
1.
2.
3.
4.
2.关系运算符
gt: great than(大于)> ge: great equal(大于等于)>= eq: equal(等于)== lt: less than(小于)< le: less equal(小于等于)<= ne: not equal(不等于)!=
3.逻辑运算符
&& 或 and: 表示并且
|| 或 or : 表示或者
1. 0 and 2<3">
2. 0 and 2>3">
3. 0 or 2<3">
4. 0 or 2>3">
5.
6.
7.
8.
9.
10.
在早期的thymeleaf模板引擎框架中 逻辑运算符要写在${}的外边,目前我们2.4.5版本中,可以写在${}里面
4.三目运算符
1.
对空值作出处理
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

四 超链接以及事件
th:href
设置href属性的。取值使用@{}取值
1. 跳转
2.
3. 跳转二
页面代码
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18. 删除
19.
20.
后台controller处理器
1. @Controller
2. public class ThymeleafController {
3.
4. @Autowired
5. private EmpService empService;
6.
7. @RequestMapping("/showAllEmp")
8. public String showEmp(Map map) {
9. List empList = empService.findAll();
10. map.put("empList", empList);
11. map.put("emp", empList.get(0));
12. return "showEmp";
13. }
14.
15. @RequestMapping("/removeEmp")
16. public String removeEmp(Integer empno,String ename){
17. boolean success =empService.removeEmp(empno,ename);
18. return "redirect:showAllEmp";
19. }
20. }
th:onclick:给元素绑定事件,单击事件并传递参数
写法1:仅仅支持数字和布尔类型参数的传递,字符串不支持
1. 删除
写法2:支持数字和文本类型的参数传递
1. 删除
前端代码
1.
2.
3. 索引
4. 序号
5. 总人数
6. 偶数索引?
7. 奇数索引?
8. 第一?
9. 最后?
10. 工号
11. 姓名
12. 职务
13. 上级
14. 入职日期
15. 工资
16. 补助
17. 部门号
18. 操作
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37. 删除
38.
39.
40.
41.
42.
五 Thymeleaf内置对象
Thymeleaf提供了一些内置对象,内置对象可直接在模板中使用。这些对象是以#引用的。
使用内置对象的语法
1引用内置对象需要使用#
2大部分内置对象的名称都以s结尾。如:strings、numbers、dates
常见内置对象如下:
- #arrays:数组操作的工具;
- #aggregates:操作数组或集合的工具;
- #bools:判断boolean类型的工具;
- #calendars:类似于#dates,但是是java.util.Calendar类的方法;
- #ctx:上下文对象,可以从中获取所有的thymeleaf内置对象;
- #dates:日期格式化内置对象,具体方法可以参照java.util.Date;
- #numbers: 数字格式化;#strings:字符串格式化,具体方法可以参照String,如startsWith、contains等;
- #objects:参照java.lang.Object;
- #lists:列表操作的工具,参照java.util.List;
- #sets:Set操作工具,参照java.util.Set;#maps:Map操作工具,参照java.util.Map;
- #messages:操作消息的工具。
更多

这里我们着重学习 strings dates numbers和域对象
1.strings对象

2.dates对象

3. numbers对象
#numbers.formatDecimal(numbwe,整数位,整数位千分位标识符,小数位,小数位表示符)
${#numbers.formatDecimal(num,1,'COMMA',2,'POINT')}
显示:99,999,999.99
1:表示整数位至少一位,不足以0补齐,如:num = 0.00,
${#numbers.formatDecimal(num,0,'COMMA',2,'POINT')}则显示 .00
${#numbers.formatDecimal(num,1,'COMMA',2,'POINT')}则显示 0.00
COMMA:','
POINT:‘.’
4.域对象

controller
@RequestMapping("showIndex")
2. public String showIndex(Map map, HttpServletRequest req, HttpSession session){
3. // 向request域放数据
4. req.setAttribute("msg", "requestMessage");
5. // 向session域放数据
6. session.setAttribute("msg", "sessionMessage");
7. // 向application域放数据
8. req.getServletContext().setAttribute("msg", "applicationMessage");
9.
10. // 对象List集合数据
11. List empList = empService.findAll();
12. map.put("empList", empList);
13. return "index";
14. }
页面
1.
2.
3.
4.
5. Title
6.
23.
24.
25.
26.
27. 索引
28. 序号
29. 总人数
30. 偶数索引?
31. 奇数索引?
32. 第一?
33. 最后?
34. 工号
35. 姓名
36. 职务
37. 上级
38. 入职日期
39. 入职年
40. 入职月
41. 入职日
42. 工资
43. 补助
44. 部门号
45. 操作
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67. 删除
68.
69.
70.
71.
72.
81.
82.
83. request:
84.
85.
86.
87.
88. session:
89.
90.
91.
92.
93. application:
94.
95.
96.
97.
98.
六 SpringBoot_模板引擎总结(了解)
jsp
优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库
缺点:
性能问题。不支持前后端分离
freemarker
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。
目前企业中:主要用Freemarker做静态页面或是页面展示
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多
Thymeleaf
Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。
Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。
优点:静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。springboot官方推荐方案。
缺点:模板必须符合xml规范
VUE: 前后端分离,最多,未来趋势
相关内容
热门资讯
银河麒麟V10SP1高级服务器...
银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...
目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出...
如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面
光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans...
在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存...
这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖...
大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
ToDesk 远程工具安装及...
目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载
北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限
要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...