SpringBoot07:Thymeleaf模板引擎

news2024/12/28 11:21:02

目录

一、Thymeleaf

1、模板引擎

2、引入Thymeleaf

3、Thymeleaf分析

二、测试

1、编写一个TestController

2、编写一个测试页面welcome.html放在templates目录下

3、启动项目请求测试

三、Thymeleaf语法学习

1、修改测试请求,增加数据传输

2、要使用thymeleaf,需要在html文件中导入命名空间的约束,方便提示;

3、前端页面

4、启动测试​编辑

 5、注意:

1.可以使用任意的th:arr来替换html中原生属性的值;     ​编辑

2.能写的表达式有哪些?

一、Thymeleaf

1、模板引擎

前端交给我们的页面,是html页面。如果是我们以前开发,需要把它们转成jsp页面;

  • jsp的好处就是当查出一些数据转发到JSP页面以后,可以用jsp轻松实现数据的显示及交互等。
  • jsp支持非常强大的功能,包括能写Java代码,但是SpringBoot这个项目默认不支持jsp,它是以jar的方式,不是war打包,其次用的是嵌入式的Tomcat;
  • 那不支持jsp,如果我们直接用纯静态页面的方式,给我们开发会带来非常大的麻烦,所以怎么办呢?

SpringBoot推荐你可以来使用模板引擎:
模板引擎,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但思想都是一样的:

 模板引擎的思想:
模板引擎的作用就是我们来写一个页面模板,动态值的获取方式是写一些表达式,

  • 后台封装数据:我们需要在后台封装一些数据,然后把这个模板和这个数据交给模板引擎;
  • 前台填充数据到指定位置:模板引擎按照这个数据使用表达式解析,填充到指定的位置,然后把这个数据最终生成一个我们想要的内容给写出去,这就是模板引擎。
  • 此处主要介绍SpringBoot推荐的Thymeleaf模板引擎。
    • Thymeleaf是一个高级语言的模板引擎;
    • 他们的语法更简单,功能更强大;
    • 每种语法引擎的语法有点儿不一样。

2、引入Thymeleaf

关于Thymeleaf的三个网址:

Thymeleaf官网:Thymeleaf
Thymeleaf在Github的主页:https://github.com/thymeleaf/thymeleaf
Spring官方文档:找到我们对应的版本        https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/htmlsingle/#using-boot-starter
找到对应的pom依赖,可以适当点进原码看下本来的包:

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

Maven会自动下载jar包:

3、Thymeleaf分析

首先按照SpringBoot的自动配置原理看一下这个Thymeleaf的自动配置规则(ThymeleafProperties.java)类,再按照这个规则使用:

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {

	private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;

	public static final String DEFAULT_PREFIX = "classpath:/templates/";

	public static final String DEFAULT_SUFFIX = ".html";

	private boolean checkTemplate = true;
	private boolean checkTemplateLocation = true;
	private String prefix = DEFAULT_PREFIX;
	private String suffix = DEFAULT_SUFFIX;
	private String mode = "HTML";
	private Charset encoding = DEFAULT_ENCODING;

我们可以在其中看到默认的前缀和后缀!

只需要把html页面放在类路径下的Template下,thymeleaf就可以自动渲染页面了。

二、测试

1、编写一个TestController

@Controller
public class TestController {
    @GetMapping("/hello")
    public String hello(Model model){
     return "welcome";
    }
}

2、编写一个测试页面welcome.html放在templates目录下

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
欢迎进入首页
</body>
</html>

3、启动项目请求测试

三、Thymeleaf语法学习

语法学习可以参考官网文档说明。

1、修改测试请求,增加数据传输

    @GetMapping("/hello")
    public String hello(Model model){
        model.addAttribute("userList", Arrays.asList("liwanyu","zhangsan"));
        model.addAttribute("msg","<h1>hello,world!!!<h1>");
        return "welcome";
    }

2、要使用thymeleaf,需要在html文件中导入命名空间的约束,方便提示;

<html lang="en" xmlns:th="http://www.thymeleaf.org">

3、前端页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
欢迎进入首页
<div th:text="${msg}"></div>
<div th:utext="${msg}"></div>
<div th:each="user:${userList}" th:text="${user}"></div>
</body>
</html>

4、启动测试

 5、注意:

1.可以使用任意的th:arr来替换html中原生属性的值;
     

2.能写的表达式有哪些?

Simple expressions:
    Variable Expressions: ${...}
    Selection Variable Expressions: *{...}
    Message Expressions: #{...}
    Link URL Expressions: @{...}
    Fragment Expressions: ~{...}
Literals
    Text literals: 'one text' , 'Another one!' ,…
    Number literals: 0 , 34 , 3.0 , 12.3 ,…
    Boolean literals: true , false
    Null literal: null
    Literal tokens: one , sometext , main ,…
Text operations:
    String concatenation: +
    Literal substitutions: |The name is ${name}|
Arithmetic operations:
    Binary operators: + , - , * , / , %
    Minus sign (unary operator): -
Boolean operations:
    Binary operators: and , or
    Boolean negation (unary operator): ! , not
Comparisons and equality:
    Comparators: > , < , >= , <= ( gt , lt , ge , le )
    Equality operators: == , != ( eq , ne )
Conditional operators:
    If-then: (if) ? (then)
    If-then-else: (if) ? (then) : (else)
    Default: (value) ?: (defaultvalue)
Special tokens:
    Page 17 of 106
    No-Operation: _

完结,撒花✿✿ヽ(°▽°)ノ✿·~~~~~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix服务部署

文章目录 zabbix1 zabbix简介1.1 组成部件1.2 监控原理1.3 Zabbix 6.0新特性1.4 Zabbix6.0功能组件1.4.1 Zabbix Server1.4.2 数据库1.4.3 Web界面1.4.4 Zabbix Agent1.4.5 Zabbix Proxy1.4.6 Java Gateway 2 部署zabbix服务端2.1 部署Nginx2.2 安装PHP2.3 修改Nginx配置2.4 修…

Docker安装ElasticSearch7.14.0 docker安装elasticsearch7.14.0完整详细教程

Docker安装ElasticSearch7.14 docker安装elasticsearch7.14完整详细教程 Docker 上安装 ElasticSearch 7.14.0 的步骤&#xff1a;选择要安装的ElasticSearch 版本1、拉取 ElasticSearch 镜像2、创建并运行容器关闭容器启动容器重启容器 3、elasticsearch常用端口以及作用4、测…

耳夹式骨传导耳机测评!2023年最全耳夹骨传导耳机盘点

现在市面上的骨传导耳机品牌层出不穷&#xff0c;骨传导耳机好不好用&#xff0c;主要还是看耳机的品牌背景以及独家的音质技术调配&#xff0c;较大的骨传导耳机品牌在购买时售后以及使用体验上都具有一定的保障&#xff0c;下面就分享一些值得入手的骨传导耳机给大家吧~ 第一…

安装.net framework3.5 无法打开运行空间池,服务器管理器winRM插件可能已经损坏

解决方案&#xff1a; 1.以管理员权限打开命令提示符&#xff0c;然后运行如下命令&#xff1a; "reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f" 2.然后运行"winrm quickco…

玩转 TypeScript 中【class类】的定义与使用方法解读。

目录 类的概念类的继承 &#xff1a;类的存取器&#xff1a;类的静态方法与静态属性&#xff1a;类的修饰符&#xff1a;参数属性&#xff1a;抽象类&#xff1a;类的类型: 类的概念 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JavaScript 中的类建立在原型上&a…

java.lang.NoSuchMethodError异常原因及解决办法

java.lang.NoSuchMethodError异常原因及解决办法 第一种简单的情况就是本类中需要调用的方法名称错误&#xff0c;这种情况就需要去检查方法名称是否正确&#xff0c;避免调用的方法和本类中的有相同的名称。 第二种情况就是jar包的问题 可能是jar包没有导入进来或者jar包导入…

HTTP第17讲——Cookie机制

Cookie的诞生背景 HTTP 是“无状态”的&#xff0c;这既是优点也是缺点。优点是服务器没有状态差异&#xff0c;可以很容易地组成集群&#xff0c;而缺点就是无法支持需要记录状态的事务操作。 后来发明的 Cookie 技术&#xff0c;给 HTTP 增加了“记忆能力”。 什么是Cookie…

图灵奖得主Geoffrey Hinton:我的五十年深度学习生涯与研究心法

本文介绍了Hinton非常坦诚地分享了自己的学术生涯&#xff0c;深度学习的未来和研究心得。 他从未正式上过计算机课程&#xff0c;本科在剑桥大学读的是生理学和物理学&#xff0c;期间曾转向哲学&#xff0c;但最终拿到的却是心理学方向的学士学位&#xff1b;他曾因为一度厌学…

在OK3588的Ubuntu系统上安装Firefox浏览器

文章目录 概要配置上网环境安装的具体命令 概要 因为Ubuntu系统里面没有安装浏览器&#xff0c;为了方便使用&#xff0c;提高工作效率&#xff0c;我们安装一下Firefox浏览器。 Firefox是一款适用于Ubuntu系统的免费和开源的Web浏览器。由Mozilla Foundation和其子公司Mozil…

818. 数组排序

链接&#xff1a; 链接 题目&#xff1a; 给定一个长度为 nn 的数组 aa 以及两个整数 ll 和 rr&#xff0c;请你编写一个函数&#xff0c;void sort(int a[], int l, int r)&#xff0c;将 a[l]∼a[r]a[l]∼a[r] 从小到大排序。 输出排好序的数组 aa。 输入格式 第一行包含三个…

TiDB简述及TiKV的数据结构与存储 | 京东物流技术团队

1 概述 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品&#xff0c;具备水平扩容或者缩容、金融级高可用、实时 HTAP、…

景区导航小程序解决方案-便捷化游览体验

系统背景 景区导航小程序是一种基于移动设备的智能化导航系统&#xff0c;旨在为游客提供更加便捷、准确的导航服务。随着人们生活水平的提高&#xff0c;旅游业得到了快速发展&#xff0c;然而&#xff0c;在景区游览过程中&#xff0c;游客往往需要花费大量时间和精力来寻找…

Java- IO 及其相关面试题

目录 一、前言二、Java IO 概述输入和输出流2.1.1 定义2.1.2 代码示例 2.2 字节流和字符流2.2.1 定义2.2.2 代码示例 2.3 标准IO和NIO 三、字节流和字符流3.1. 字节流&#xff1a;InputStream和OutputStream3.1.1. FileInputStream和FileOutputStream3.1.2. ByteArrayInputStre…

【unity之IMGUI实践】单例模式管理面板对象【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

30页PPT,IPv6技术一次梳理清

上午好&#xff0c;我的网工朋友。 IPv6技术在以前的文章里&#xff0c;已经被老杨总说的很明白了&#xff1a;《都到2023年了&#xff0c;为啥IPv6还一直无法普及&#xff1f; 》 但是IPv6的过渡技术&#xff0c;好像一直没给你补上。 你知道IPv4向IPv6过渡的步骤有哪些吗&…

在B1中定义一个纯虚函数pvf(),重做练习1-4,并解释其结果

运行代码&#xff1a; //在B1中定义一个纯虚函数pvf()&#xff0c;重做练习1-4&#xff0c;并解释其结果。 #include"std_lib_facilities.h" //---------------------------------------------------------------------- //定义B1类。 class B1 { public:virtual vo…

《Linux运维总结:Centos7.6之OpenSSH9.0升级版本至9.3》

一、环境信息 说明&#xff1a;当前环境openssh版本为9.0p1&#xff0c;是从7.4p1版本直接升级上来的&#xff0c;先需要将9.0p1版本升级至9.3p1版本。如下所示&#xff0c;则为源ssh和目标ssh的信息。 -操作系统openssh版本openssh安装目录openssh安装方式openssl版本openssl…

你感到迷茫吗?【笔记】

你感到迷茫吗&#xff1f;【笔记】 前言推荐你感到迷茫吗&#xff1f;原通工19级-西电电院(电子信息雷达方向-专硕三年)原计科19级-西邮计院(软件工程方向-学硕三年)原计科19级-北京360(月薪-1w)现计科20级&#xff08;考研&#xff1a;~~不公开处理~~ 物联网&#xff09;对后来…

Jmeter 分布式压测,你的系统能否承受高负载?

‍你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子&#xff0c;它模拟了同时有 5000 个用户&#xff0c;循环 10 次的情况‍。 请求默认配置 如果你想学习性能测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全网第一的性能测…

在电脑上如何调整照片kb大小?怎么压缩图片不改变清晰度?

当我们使用图片时&#xff0c;如果需要压缩图片大小该怎么处理&#xff1f;可以使用图片压缩工具在线操作的方法解决&#xff0c;今天就分享一款图片在线处理工具&#xff0c;打开浏览器即可完成图片压缩&#xff08;https://www.yasuotu.com&#xff09;&#xff0c;下面是详细…