修改pom文件,引入对应坐标
<dependencies>
<!--web项目启动坐标-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--thymeleaf坐标-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
在src/main/文件下创建templates文件下存放模板文件
- templates:该目录是安全的,意味着该目录下的内容是不允许外界直接访问的,springboot规定所有的模板文件必须放在该文件夹下。
Thymeleaf特点
- thymeleaf是通过特定的语法对html页面进行渲染
Thymeleaf语法
- 变量输出与字符串操作
- th:text:在页面中输出某个值
-
<span th:text="Hello"></span> <hr/> <span th:text="${msg}"></span>
- th:value:可以将一个值放到input标签的value属性中
-
<input type="text" name="username" th:value="${msg}">
- ${#strings.isEmpty(key)}:判断字符串是否为空
- 调用Thmeleaf内置对象时应注意语法
- 调用内置对象一定要用#
- 大部分内置对象都以s结尾strings、numbers、dates
-
//为空返回true,不为空返回false <span th:text="${#strings.isEmpty(msg)}"></span>
- ${#strings.contains(k1,k2)}:判断字符串k1中是否包含字符串k2
-
//false <span th:text="${#strings.contains('The','9')}"></span> //true <span th:text="${#strings.contains('The','T')}"></span>
- $(#strings.startsWith(k1,k2)):判断字符串k1是否以字符串k2开头
-
<!--false--> <span th:text="${#strings.startsWith('The','9')}"></span> <!--true--> <span th:text="${#strings.startsWith('The','T')}"></span>
- $(#strings.endsWith(k1,k2)):判断字符串k1是否以字符串k2结尾
-
<!--fasle--> <span th:text="${#strings.endsWith('The','9')}"></span> <!--true--> <span th:text="${#strings.endsWith('The','例')}"></span>
- $(#strings.length(k1)):判断字符串k1的长度
-
<!--2--> <span th:text="${#strings.length('张三')}"></span>
- $(#strings.indexOf(k1,k2)):判断字符k2在字符串k1中第一次出现的的位置,没找到返回-1
-
<!--4--> <span th:text="${#strings.indexOf('zhangsan','g')}"></span>
- $(#strings.substring(k1,n1,n2)):截取字符串k1位于[n1,n2)的子串
-
<!--zha--> <span th:text="${#strings.substring('zhangsan',0,3)}"></span>
- $(#strings.toUpperCase(k1)):将字符串转化为大写
-
<!--ZHANG--> <span th:text="${#strings.toUpperCase('zhang')}"></span>
- $(#strings.toLowerCase(k1)):将字符串转化为小写
-
<!--zhang--> <span th:text="${#strings.toLowerCase('ZHANG')}"></span>
- 日期格式化处理
- ${#dates.format(key)}:格式化日期key,默认的以浏览器语言为格式化标准
-
<span th:text="${#dates.format(date)}"></span> <!--按照自定义格式做日期转换--> <span th:text="${#dates.format(date,'yyyy/MM/dd')}"></span>
-
<!--取年--> <span th:text="${#dates.year(date)}"></span> <!--取月--> <span th:text="${#dates.month(date)}"></span> <!--取日--> <span th:text="${#dates.day(date)}"></span>
- 条件判断
- th:if="key":key为真返回true,否则返回false
-
//页面显示:性别:男 <span th:if="'男'=='男'">性别:男</span> <span th:if="'女'=='女'">性别:女</span>
- th:switch="key":多条件判断
-
<!--多条件判断--> //id的值为2,页面显示:ID:2 <div th:switch="${id}"> <span th:case="1">ID:1</span> <span th:case="2">ID:2</span> <span th:case="3">ID:3</span> <span th:case="4">ID:4</span> </div>
- 迭代遍历
- th:each="u : ${list}"
-
<table border="1"> <tr> <th>name</th> <th>age</th> <th>index</th> <th>count</th> <th>size</th> <th>even</th> <th>odd</th> <th>first</th> <th>last</th> </tr> <!--迭代集合list,把迭代到的每一个元素赋值给u,var标识被迭代元素的状态--> <tr th:each="u,var : ${list}"> <td th:text="${u.name}"></td> <td th:text="${u.age}"></td> <!--当前元素索引:从0开始--> <td th:text="${var.index}"></td> <!--计数器:从1开始--> <td th:text="${var.count}"></td> <!--被迭代集合的元素个数--> <td th:text="${var.size}"></td> <!--当前行数是不是偶数,从0开始--> <td th:text="${var.even}"></td> <!--当前行数是不是奇数,从0开始--> <td th:text="${var.odd}"></td> <!--是否是第一个元素--> <td th:text="${var.first}"></td> <!--是否是最后一个元素--> <td th:text="${var.last}"></td> </tr> </table>
- 遍历map
-
<table border="1"> <tr> <th>name</th> <th>age</th> </tr> <tr th:each="maps : ${map}"> <!--直接输出的话,显示的是当前元素value对象的地址--> <!--<td th:text="${maps}"></td>--> <td th:each="entry:${maps}" th:text="${entry.value.name}"></td> <td th:each="entry:${maps}" th:text="${entry.value.age}"></td> </tr> </table>
- 域操作对象
- HttpServletRequest
- HttpSession
- ServletContext
-
<!--取request--> request:<span th:text="${#httpServletRequest.getAttribute('req')}"></span><br> <!--取session--> session:<span th:text="${session.sess}"></span><br> <!--取servletcontext--> application:<span th:text="${application.app}"></span>
- URL表达式
- URL表达式语法:
- 基本语法:@{}
- 绝对路径
-
<!--使用Thyemeleaf渲染的路径必须使用@{}包裹--> <a th:href="@{http://www.baidu.com}">绝对路径</a><br>
- 相对路径:
- 相对于当前项目的根
-
<!--直接用@{}包裹时时,默认相对于项目上下文的路径--> <a th:href="@{/show}">相对地址</a>
- 相对于服务器路径的根
-
<!--相对于服务器的根,会访问同一个服务器下的project2项目--> <a th:href="@{~/project2/xxx}">相对于服务器的根</a>
- 传参
-
<!--当需要传参时,可在路径后面将参数用()包裹,若有多个参数则用逗号分隔--> <a th:href="@{/show(id=1,name='zhangsan')}">相对路径-传参</a>
- URL表达式语法: