环境搭建:
创建一个Maven项目,按照Maven项目的规范,在src/main/下新建一个名为resources的文件夹,并在下面新建static和templates文件夹。
① 修改pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.fkit</groupId>
<artifactId>thymeleaftest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>thymeleaftest</name>
<url>http://maven.apache.org</url>
<!--
spring-boot-starter-parent是Spring Boot的核心启动器,
包含了自动配置、日志和YAML等大量默认的配置,大大简化了我们的开发。
引入之后相关的starter引入就不需要添加version配置,
spring boot会自动选择最合适的版本进行添加。
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- 添加spring-boot-starter-web模块依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加spring-boot-starter-thymeleaf模块依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies></project>
③测试Thymeleaf表达式访问数据:
index.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"></meta>
<title>thymeleaf示例</title>
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />
<link rel="stylesheet" th:href="@{css/bootstrap-theme.min.css}"/>
<script type="text/javascript" th:src="@{js/jquery-1.11.0.min.js}"></script>
<script type="text/javascript" th:src="@{js/bootstrap.min.js}"></script>
</head>
<body>
<div class="panel panel-primary">
<!-- .panel-heading 面板头信息。 -->
<div class="panel-heading">
<!-- .panel-title 面板标题。 -->
<h3 class="panel-title">thymeleaf常用功能示例</h3>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
<a th:href="@{regexptest?loginName=badao&password=123456}">测试表达式访问数据</a><br/><br/>
</div>
</div>
</div>
</body>
</html>
附:
1.<html xmlns:th="http://www.thymeleaf.org">这样的话才可以在其他标签里面使用th:*
这样的语法。
2.<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />引入css文件的语法,这里是引入bootstrap的css文件。
3.<script type="text/javascript" th:src="@{js/bootstrap.min.js}"></script>引入js文件的语法,这里是引入jquery和bootstrap的js文件。
4.<a th:href="@{regexptest?loginName=badao&password=123456}">测试表达式访问数据</a>通过表达式传值,点击超链接时请求到regexptest同时传递两个值。
新建包com.ysh.thymeleaftest.controller,在此包下新建ThymeleafController.java:
@Controller
public class ThymeleafController {
/*
* 保存数据到作用范围域,用于测试Thymeleaf表达式访问数据
* */
@RequestMapping("/regexptest")
public String regexptest(
HttpServletRequest request,
HttpSession session){
System.out.println(request.getParameter("loginName"));
System.out.println(request.getParameter("password"));
// 保存数据到request作用范围域当中
request.setAttribute("request1", "request值");
// 保存数据到session作用范围域当中
session.setAttribute("session1", "session值");
// 保存数据到ServletContext(application)作用范围域当中
request.getServletContext().setAttribute("application1", "application值");
return "success1";
}
附:
1.Thymeleaf类用来响应index.html中的请求:
<a th:href="@{regexptest?loginName=badao&password=123456}">测试表达式访问数据</a>
2.通过request.getParameter("loginName")以及request.getParameter("password")获取到通过超链接传过来的用户名和密码。
3.通过request.setAttribute("request1", "request值");将request值存入request域中
4.session.setAttribute("session1", "session值");将session值存入session域中
5.request.getServletContext().setAttribute("application1", "application值");将application值存入application域中
success1.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"></meta>
<title>thymeleaf示例</title>
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />
<link rel="stylesheet" th:href="@{css/bootstrap-theme.min.css}"/>
<script type="text/javascript" th:src="@{js/jquery-1.11.0.min.js}"></script>
<script type="text/javascript" th:src="@{js/bootstrap.min.js}"></script>
</head>
<body>
<div class="panel panel-primary">
<!-- .panel-heading 面板头信息。 -->
<div class="panel-heading">
<!-- .panel-title 面板标题。 -->
<h3 class="panel-title">Thymeleaf表达式访问数据</h3>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
<p><font color="red">${param.x}将返回一个名为x的请求参数</font></p><br/>
访问页面传递的参数:<span th:text="${param.loginName[0]}">登录名</span> <span th:text="${param.password[0]}">密码</span>
<p><font color="red">${x}将返回存储在Thymeleaf上下文中的变量x或作为请求Request作用范围域中的属性。</font></p><br/>
访问request作用范围域中的变量:<span th:text="${request1}">访问成功</span><br/>
<p><font color="red">${session.x}将返回一个名为x的会话HttpSession作用范围域中的属性。</font></p><br/>
访问session作用范围域中的变量:<span th:text="${session.session1}">访问成功</span><br/>
<p><font color="red">${application.x}将返回一个名为x的全局ServletContext上下文作用范围域中的属性。</font></p><br/>
访问application作用范围域中的变量:<span th:text="${application.application1}">访问成功</span><br/>
</div>
</div>
</div>
</body>
</html>
运行结果:
点击超链接: