【SpringBoot】SpringBoot与Thymeleaf模版

模板引擎的思想

  模板是为了将显示与数据分离,模板技术多种多样,但其本质都是将模板文件和数据通过模板引擎生成最终的HTML代码。

    

Thymeleaf介绍

  Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。

  Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显示,也可以作为静态原型工作,从而可以在开发团队中加强协作。

  Thymeleaf拥有适用于Spring Framework的模块,与您喜欢的工具的大量集成以及插入您自己的功能的能力,对于现代HTML5 JVM Web开发而言,Thymeleaf是理想的选择-尽管它还有很多工作要做。

  官方地址: https://www.thymeleaf.org/
 

Thymeleaf使用

  1、新建一个SpringBoot项目,并且引入thymeleaf依赖

1 <dependency>
2     <groupId>org.springframework.boot</groupId>
3     <artifactId>spring-boot-starter-thymeleaf</artifactId>
4 </dependency>

   最终pom文件如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.test</groupId>
 8     <artifactId>test-springboot-web</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11 
12     <parent>
13         <groupId>org.springframework.boot</groupId>
14         <artifactId>spring-boot-starter-parent</artifactId>
15         <version>2.1.8.RELEASE</version>
16     </parent>
17 
18     <properties>
19 
20         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
21         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
22         <java.version>1.8</java.version>
23     </properties>
24 
25     <dependencies>
26         <dependency>
27             <groupId>org.springframework.boot</groupId>
28             <artifactId>spring-boot-starter-web</artifactId>
29         </dependency>
30 
31         <dependency>
32             <groupId>org.springframework.boot</groupId>
33             <artifactId>spring-boot-starter-thymeleaf</artifactId>
34         </dependency>
35 
36         <dependency>
37             <groupId>org.springframework.boot</groupId>
38             <artifactId>spring-boot-starter-test</artifactId>
39             <scope>test</scope>
40         </dependency>
41 
42     </dependencies>
43 
44 
45     <!-- SpringBoot打包插件,可以将代码打包成一个可执行的jar包 -->
46     <build>
47         <plugins>
48             <plugin>
49                 <groupId>org.springframework.boot</groupId>
50                 <artifactId>spring-boot-maven-plugin</artifactId>
51             </plugin>
52         </plugins>
53     </build>
54 </project>
View Code

  2、编写controller,在controller中将数据绑定到页面(success.html)

 1 package com.test.springboot.web.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 import java.util.Arrays;
 8 import java.util.Map;
 9 
10 @Controller
11 public class HelloController {
12 
13     @RequestMapping("/success")
14     public String success(Map<String, Object> map){
15         map.put("hello", "<span style=\"color: red;\">hello!</span>");
16         map.put("users", Arrays.asList("张三", "李四", "王五"));
17         return "success";
18     }
19 
20 }

  3、编辑页面success.html,在页面上获取数据  

 1 <!DOCTYPE html>
 2 <!--
 3  xmlns:th="http://www.thymeleaf.org" 的作用是增加thymeleaf的语法提示
 4 -->
 5 <html lang="en" xmlns:th="http://www.thymeleaf.org">
 6 <head>
 7     <meta charset="UTF-8">
 8     <title>Title</title>
 9 </head>
10 <body>
11     test page
12     <h4 th:text="${hello}"></h4>
13     <h4 th:utext="${hello}"></h4>
14     <h4 th:each="user:${users}" > [[${user}]] </h4>
15 </body>
16 </html>

  4、重启项目,在浏览器中使用地址 :http://localhost:8080/success,进行访问,效果如下

    

Thymeleaf语法

  1、设置标签属性

    th:text;改变当前元素里面的文本内容;

    th:任意html属性;来替换原生属性的值

    

  2、表达式语法

  • 简单表达式:
    • 变量表达式: ${...}
    • 选择变量表达式: *{...}
    • 消息表达: #{...}
    • 链接URL表达式: @{...}
    • 片段表达式: ~{...}
  • 文字
    • 文本文字:'one text''Another one!',...
    • 号码文字:0343.012.3,...
    • 布尔文字:truefalse
    • 空文字: null
    • 文字标记:onesometextmain,...
  • 文字操作:
    • 字符串串联: +
    • 文字替换: |The name is ${name}|
  • 算术运算:
    • 二元运算符:+-*/%
    • 减号(一元运算符): -
  • 布尔运算:
    • 二元运算符:andor
    • 布尔否定(一元运算符): !not
  • 比较和平等:
    • 比较:><>=<=gtltgele
    • 等号运算符:==!=eqne
  • 条件运算符:
    • 如果-则: (if) ? (then)
    • 如果-则-否则: (if) ? (then) : (else)
    • 默认: (value) ?: (defaultvalue)
  • 特殊令牌:
    • 无操作: _

  3、常用的内置对象

    一、ctx :上下文对象。

    二、vars :上下文变量。

    三、locale:上下文的语言环境。

    四、request:(仅在web上下文)的 HttpServletRequest 对象。

    五、response:(仅在web上下文)的 HttpServletResponse 对象。

    六、session:(仅在web上下文)的 HttpSession 对象。

    七、servletContext:(仅在web上下文)的 ServletContext 对象

  4、常用的内置方法

  一、strings:字符串格式化方法,常用的Java方法它都有。比如:equals,equalsIgnoreCase,length,trim,toUpperCase,toLowerCase,indexOf,substring,replace,startsWith,endsWith,contains,containsIgnoreCase等

  二、numbers:数值格式化方法,常用的方法有:formatDecimal等

  三、bools:布尔方法,常用的方法有:isTrue,isFalse等

  四、arrays:数组方法,常用的方法有:toArray,length,isEmpty,contains,containsAll等

  五、listssets:集合方法,常用的方法有:toList,size,isEmpty,contains,containsAll,sort等

  六、maps:对象方法,常用的方法有:size,isEmpty,containsKey,containsValue等

  七、dates:日期方法,常用的方法有:format,year,month,hour,createNow等



猜你喜欢

转载自www.cnblogs.com/h--d/p/12006972.html