1.需要添加必要的jar包 链接:https://pan.baidu.com/s/1Y3bA9D7_QAHG3jRq670m6A 密码:29m9
2. SpringMvc.xml配置
<!-- 使用thymeleaf解析 -->
<bean id="templateResolver"
class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML" />
<property name="cacheable" value="false" />
<property name="characterEncoding" value="UTF-8"/><!--不加会乱码-->
</bean>
<bean id="templateEngine"
class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<!--解决中文乱码-->
<property name="characterEncoding" value="UTF-8"/>
</bean>
3. web.xml进行配置
<!-- SpringMVC -->
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!--配置thymeleaf -->
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
4. 编写controller
@RequestMapping(value = "/thymeleaf", method=RequestMethod.GET)
public String thymeleaf(Model model) {
model.addAttribute("hello", "jack")
return "ce";
}
5. 编写ce.html
<!DOCTYPE html>
<HTML xmlns="http://www.thymeleaf.org">
<!--声明Thymeleaf命名空间-->
<head>
<title>ceshi</title>
</head>
<body>
<h1 th:text="${hello}"></h1>
</body>
</html>
//基础知识
Thymeleaf笔记
1.前端html页面标签中引入
<html xmlns:th=“http://www.thymeleaf.org">
2.表达式
2.1变量表达式: ${…}
<span th:text=“${test}">
<li th:each="book : ${books}">
${books}从上下文中选择名为books的变量,并在th:each中使用循环将其评估为迭代器
2.2选择表达式: *{…}
选择表达式就像变量表达式一样,它们不是整个上下文变量映射上执行,而是在先前选择的对象。 它们看起来像这样:
*{customer.name}
它们所作用的对象由th:object属性指定:
<div th:object="${book}">
...
<span th:text="*{title}">...</span>
...
</div>
2.3消息表达式: #{…} 国际化时使用,也可以使用内置的对象,比如date格式化数据
2.4链接表达式: @{…} 用来配合link src href使用的语法
<link rel="stylesheet" type="text/css" th:href="@{/css/index.css}"></link>
链接表达式也可以是绝对的:
<a th:href="@{http://www.mycompany.com/main}">...</a>
2.5片段表达式: ~{…} 用来引入公共部分代码片段,并进行传值操作使用的语法
片段表达式是一种简单的方法用来表示标记的片段并将其移动到模板中。 由于这些表达式,片段可以被复制,传递给其他模板的参数等等。最常见的是使用th:insert或th:replace来插入片段
~{templatename::fragmentname}
templatename:模版名,Thymeleaf会根据模版名解析完整路径:/resources/templates/templatename.html,要注意文件的路径。
fragmentname:片段名,Thymeleaf通过th:fragment声明定义代码块
如:创建footer.html目前测试在本页面才能够引用
<!--th:fragment定义代码块标识-->
<footer th:fragment="copy">
© 2011 The Good Thymes Virtual Grocery
</footer>
<!--三种不同的引入方式-->
<div th:insert="footer :: copy"></div>
<div th:replace="footer :: copy"></div>
<div th:include="footer :: copy"></div>
<!--th:insert是在div中插入代码块,即多了一层div-->
<div>
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
</div>
<!--th:replace是将代码块代替当前div,其html结构和之前一致-->
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
<!--th:include是将代码块footer的内容插入到div中,即少了一层footer-->
<div>
© 2011 The Good Thymes Virtual Grocery
</div>
3. 文字
-
- 文本文字,例如:'one text', 'Another one!',…
- 数字文字,例如:0,10, 314, 31.01, 112.83,…
- 布尔文字,例如:true,false
- Null文字,例如:Null
- 文字标记,例如:one, sometext, main,…
- 文本操作:
- 字符串连接:+
- 文字替换:|The name is ${name}|
- 算术运算:
- 二进制操作:+, -, *, /, %
- 减号(一元运算符):-
- 布尔运算:
- 二进制运算符,and,or
- 布尔否定(一元运算符):!,not
- 比较和相等:
- 比较运算符:>,<,>=,<=(gt,lt,ge,le)
- 相等运算符:==, != (eq, ne)
- 条件操作符:
- If-then:(if) ? (then)
- If-then-else:(if) ? (then) : (else)
- Default: (value) ?: (defaultvalue)
4.标准的URL语法
@{…}
- 绝对网址
<a th:href="@{https://www.yiibai.com/thymeleaf/}">
2. 上下文相关URL
URL:http://localhost:8080/myapp来访问,myapp就是上下文名称。
<a th:href="@{/order/list}">
3. 与服务器相关URL
<a th:href="@{~/billing-app/showDetails.html}">
4. 协议相关URL
<script th:src="@{//scriptserver.example.net/myscript.js}">...</script>
5. 添加参数
<a th:href="@{/order/details(id=3)}">
上面示例代码,最终将输出为:
<a href="/order/details?id=3">
也可以添加几个参数,用逗号分隔它们:
<a th:href="@{/order/details(id=3,action='show_all')}">
HTML
上面代码将输出结果为:
<!-- 注意&符号在标签属性中进行HTML转义... -->
<a href="/order/details?id=3&action=show_all">
还可以使用正常参数的路径变量的形式包含参数,但在URL的路径中指定一个占位符:
<a th:href="@{/order/{id}/details(id=3,action='show_all')}">
HTML
上面输出结果为:
<a href="/order/3/details?action=show_all">
包括条件表达式,例如:
<a th:href="@{(${user.admin}? '/admin/home' : ${user.homeUrl})(id=${order.id})}">
6.简单格式化输出
7.迭代列表
条件判断针对于价格大于100,在备注一栏显示字体特殊提供
8.form表单提交数据