- 名师讲坛:Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)
- 李兴华
- 703字
- 2021-03-26 11:42:22
3.2 Thymeleaf编程起步
Thymeleaf需要按照传统MVC设计模式的方式来进行处理,所以在定义控制器的时候必须使用@Controller注解来完成。通过控制器的Model类对象,可以传递相应属性到页面中显示。
1.【mldnboot-thymeleaf项目】建立ThymeleafController程序类,该类将跳转到Thyemelaf模板页面。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P39_10876.jpg?sign=1738938335-JYsh5uWqTZ4ehdYsQz67Udy6vpoQ21nK-0-49ea47dccbddca3452a7d1fabee3e4ee)
2.【mldnboot-thymeleaf项目】ThymeleafController控制器会跳转到message目录下的message_show.html页面进行显示,而该页面一定要在CLASSPATH路径下配置。为了结构清晰,本程序将建立一个src/main/view的源文件,并且必须建立templates目录,随后在这个目录下创建所需要的子目录(本程序需要创建message子目录)。项目最终的目录结构如图3-1所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P39_10877.jpg?sign=1738938335-Lyvw2L0kb4N3Njro3qx5RIbYroAyO7je-0-01a37de6ea0a2074b2e3355225e6f6c3)
图3-1 Thymeleaf模板目录结构
提示:修改Thymeleaf的默认配置。
SpringBoot项目中Thymeleaf的动态页面需要保存在templates目录中,页面的扩展名默认使用的是*.html,如果开发者觉得这样的设计不合理,也可以通过application.yml配置文件自行修改。
范例:修改Thyemeleaf的配置项。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P40_10880.jpg?sign=1738938335-7dyTRNwSlH1x0tqqMVtHv42GbZodGwZ8-0-2ec87d0c4e6fdea7a98ffb505a327c4e)
虽然SpringBoot中可以修改Thymeleaf的默认配置项,但是在实际开发中不建议修改,还是遵从默认配置比较合理。
3.【mldnboot-thymeleaf项目】编写message_show.html页面,实现控制层传递属性输出。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P40_10884.jpg?sign=1738938335-2B1aloDfqwEbJJTKtzXyiR1jW06WlqzW-0-ece1ce9e75cbea2d032d431e7f6472c5)
本程序使用<p>元素设定了要输出的内容。要想使用Thymeleaf的功能,必须以“th:属性”的形式处理,th:text的主要作用是进行文本输出。而要想输出request属性中的内容,则需要采用“${属性名称}”的语法格式完成。随后启动程序,输入访问地址http://localhost/view?mid=mldnjava,页面运行效果如图3-2所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P40_1960.jpg?sign=1738938335-r5plGU6n2RYg2OYwQvk7sjiG18yutJwb-0-1196691540bed8218b1b9fbf068206b7)
图3-2 Thymeleaf模板运行
提示:传递HTML元素信息。
在本程序中,如果控制器传递的是一个HTML元素,那么对于Thymeleaf页面而言,就需要使用th:utext来显示HTML元素内容。
范例:【mldnboot-thymeleaf项目】修改ThymeleafController控制器,传递HTML元素。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P40_10888.jpg?sign=1738938335-0mLcCVQyhFa1BfFTbzLuUwbn8oMjefGj-0-238f6f4600957c88d036f5a65d40a2b7)
范例:【mldnboot-thymeleaf项目】修改message_show.html页面。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P41_10890.jpg?sign=1738938335-IjmDwQZRcH9AwGQ3ZlAVaNcu1r3h5OtL-0-1cf039ef14a280acb0011130f1d9d5b9)
本程序为了说明问题,特意使用了th:text和th:utext来输出url属性内容,程序执行结果如图3-3所示。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P41_2120.jpg?sign=1738938335-2qGYy4wOKjbza0smdjBk54VRLw5jtn8s-0-d0c50f280f5bd7b0bc7c7f469654ce5b)
图3-3 传递HTML元素
另外需要注意的是,在Thymeleaf语法里面也可以直接使用各种运算符。
![](https://epubservercos.yuewen.com/688FD1/16499866904818506/epubprivate/OEBPS/Images/Figure-P41_10891.jpg?sign=1738938335-zzF6ZB2EH6A0LqXwgLs44qHrwivC50B0-0-4e5dee0589cbef25946102d4d988ef40)
此时,Thyemeleaf模板页面会自动根据运算的数据类型和运算符进行计算。