进阶SpringBoot之 Thymeleaf 模板引擎

Thymeleaf 教程

SpringBoot 项目以 jar 的方式不是 war

SpringBoot 使用的是嵌入式 Tomcat,默认不支持 JSP

模板引擎有 JSP、FreeMarker、Thymeleaf 等

模板引擎的作用是写一个页面模板,比如某些值是动态的需要一些表达式,组装一些数据把这些值找到

把模板和数据交给模板引擎,模板引擎按照我们的数据把表达式解析填充到指定的位置,最终生成我们想要的内容

pom.xml 导入Thymeleaf 依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

ThymeleafProperties.class:

可以看到 classpath:/templates/,放在 templates 目录下

在 templates 目录下新建一个 test.html,随便写个 test

 

TestController.java:

package com.demo.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {
    @RequestMapping("/test")
    public String test(){
        return "test";
    }
}

启动,地址栏输入 localhost:8080/test

显示成功!

test.html:

xmlns:th="http://www.thymeleaf.org"

所有的 html 元素都可以被 thymeleaf 替换接管

th:元素名(比如 th:class、th:style 等)

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- 所有的html元素都可以被thymeleaf替换接管  th:元素名 -->
<div th:text="${msg}"></div>
</body>
</html>

TestController.java:写个 model

package com.demo.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {
    @RequestMapping("/test")
    public String test(Model model){
        model.addAttribute("msg", "Hello World");
        return "test";
    }
}

效果如下:

值被成功取到!

TestController.java:Arrays.asList() 数组

package com.demo.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Arrays;

@Controller
public class TestController {
    @RequestMapping("/test")
    public String test(Model model){
        model.addAttribute("msg", "<h1>Hello World</h1>");
        model.addAttribute("users", Arrays.asList("张三1","张三2","张三3"));
        return "test";
    }
}

test.html:遍历数组用 th:each

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- 所有的html元素都可以被thymeleaf替换接管  th:元素名 -->
<div th:text="${msg}"></div>
<div th:utext="${msg}"></div>
<hr>
<!--<h3 th:each="user:${users}">[[${user}]]</h3>-->
<h3 th:each="user:${users}" th:text="${user}"></h3>
</body>
</html>

效果如下:

th:utext:支持 html 的文本替换

Thymeleaf 标准表达语法

  • Simple expressions:

  • 变量表达式:${...}

    • 选择变量表达式:*{...}

    • 讯息表达:#{...}

    • 链接 URL 表达式:@{...}

    • 片段表达式:~{...}

  • Literals

  • LiteralsLiterals:'one text''Another one!',...

    • 数字 Literals:0343.012.3,…

    • 布尔 Literals:truefalse

    • 空 Literals:null

    • Literals 标记:onesometextmain,...

  • Text operations:

  • 字符串串联:+

    • Literals 替换:|The name is ${name}|
  • Arithmetic operations:

  • 二进制运算符:+-*/%

    • 减号(一元运算符):-
  • Boolean operations:

  • 二进制运算符:andor

    • 布尔取反(一元运算符):!not
  • 比较和equal:

  • 比较器:><>=<=(gtltgele)

    • 等于运算符:==!=(eqne)
  • Conditional operators:

  • 如果-则:(if) ? (then)

    • 如果-则-其他:(if) ? (then) : (else)

    • 默认值:(value) ?: (defaultvalue)

  • Special tokens:

  • 无操作:_

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值