为了后续的代码审计一些常用的框架和技能都是有必要理解一下,在此重拾Spring Boot等开拓知识内容。
1|20x01 Thymeleaf简介Thymeleaf是一个当代的做事器端Java模板引擎的web和独立的环境,能够处理HTML, XML, JavaScript, CSS,乃至纯文本。
Thymeleaf的紧张目标是供应一种优雅的和高度可掩护的办法来创建模板。为了实现这一点,它构建在自然模板的观点上,以不影响模板作为设计原型利用的办法将其逻辑注入模板文件。这改进了设计的互换,并在设计和开拓团队之间架起了桥梁。
Thymeleaf的设计从一开始就考虑了Web标准,尤其是HTML5
Thymeleaf是一个非常可扩展的模板引擎(事实上它可以被称为模板引擎框架),它许可你定义和自定义的办法,你的模板将被处理到一个风雅的细节级别。
将一些逻辑运用到标记工件(标记、一些文本、注释,如果模板不是标记,则仅仅是占位符)的工具称为处理程序,这些处理程序的凑集—加上一些额外的工件—常日是方言的组成部分。Thymeleaf的核心库供应了一种称为标准方言的方言,这对大多数用户来说该当足够了。
1|30x02 Thymeleaf 根本配置这里紧张以Srping Boot为主
<!--引入thymeleaf依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
在项目的resources\templates目录下创建HTML文件,这里把稳导入thymeleaf的命名空间,否则无法进行模板的渲染。
<!doctype html><!--把稳:引入thymeleaf的名称空间--><html lang=34;en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <p th:text="'hello SpringBoot'">hello thymeleaf</p></body></html>
编写Controller
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;@Controllerpublic class IndexController { @GetMapping("home") public String index() { return "index"; }}
这里的表明须要利用@Controller,不能利用@RestController表明,否则会报错.
如果只是利用@RestController表明Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起浸染,返回的内容便是Return 里的内容。如果须要返回到指定页面,则须要用 @Controller合营视图解析器InternalResourceViewResolver才行。如果须要返回JSON,XML或自定义mediaType内容到页面,则须要在对应的方法上加上@ResponseBody表明。1|40x03 Thymeleaf 语法类型1.变量表达式2.选择或星号表达式3.笔墨国际化表达式4.URL表达式${...}变量表达式<span th:text="${book.author.name}"> <li th:each="book : ${books}">
@{...} 链接表达式
@{/order/list} @{/order/details(id=${orderId})} 或者是 <form th:action="@{/createOrder}"> <a href="main.html" th:href="@{/main}">
#{...} 表达式
#{main.title} #{message.entrycreated(${entryId})}
{...} 选择变量表达式
<div th:object="${book}"> ... <span th:text="{title}">...</span> ... </div>
常用th标签
th标签属性
1)th:text:文本更换;
2)th:utext:支持html的文本更换。
3)th:value:属性赋值
4)th:each:遍历循环元素
5)th:if:判断条件,类似的还有th:unless,th:switch,th:case
6)th:insert:代码块引入,类似的还有th:replace,th:include,常用于公共代码块提取的场景
7)th:fragment:定义代码块,方便被th:insert引用
8)th:object:声明变量,一样平常和{}一起合营利用,达到偷
9)th:attr:设置标签属性,多个属性可以用逗号分隔
1|50x04 结尾
内容比较大略,紧张作为记录。