SpringBoot集成Thymeleaf模板引擎,为什么使用(详细介绍)

news2024/9/27 17:33:17

学习本技术第一件事:你为什么要使用,解决什么问题的?

1.为什么使用(使用背景)?

首先应用场景是单体项目,如果是前后端分离就不用关注这个了,因为单体项目你前后端都是写在一个项目里面的,也就是说你访问的地址都是controller的地址,然后controller再通过是解析器ViewResolver去解析视图找到你对应的html文件,一般前后端分离项目,你浏览器地址一定是前端项目的地址,并且基本上后端controller层使用的注解都是@RestController,是返回的数据,不会走视图解析器,现在基本上都是前后端分离,但是很多小公司还是很多前后端不分离,懂得都懂,公司穷的一批,不愿意花钱,后端既担任后端,又担任前端,还担任运维和测试,他奶奶的,最恶心的还是前端的框架,他喵的混合使用了很多种一点都不规范,简直不要太屎山,要不是为了这点米,我早跑路了。简单画个图看一下。

单体项目的访问

前后端就不介绍了。
 

接下来说一下为什么使用?有这样一种场景,我当我访问后端/test/login时返回login字符串,实际上会走视图解析器就会转发到login.html,但是呢我现在后端无法通过return返回给前端数据吧,因为return返回的是一个页面,但是呢我想去动态根据一些条件去渲染页面,那此时你写的静态html文件就无法解决这个问题对吧,因为静态数据就是死的,除非你访问后端获取数据去渲染,这种一般都是后端方法上加上了@Responsebody返回数据,不走视图解析器,但是我现在就是有这样一种需求:你访问后端——>转发到前端——>前端需要动态渲染页面。这个时候就需要用到我们的thymeleaf了。

总结需求问题:你访问后端/test/login——>转发到前端login.html——>前端需要动态渲染页面

解决:通过thymeleaf去解决。它是如何解决这个问题的?

其实简单来说,我后端在转发login.html的同时,我返回给前端一个model(也就是键值对)数据,前端使用${key}的形式取出来就是了,这样就实现了。

就这么简单,一般比如按条件去动态渲染,其实就是在后端在model.addAttibute的时候,按条件去添加就可以了。

上面主要是你得理解什么时候才会用thymeleaf,单体项目前后端不分离,小公司,开发周期短,任务重,需要动态渲染页面。

2.如何在SpringBoot项目中引入Thymeleaf

2.1引入thymeleaf依赖

thymeleaf是一个模板引擎,很抽象的名词,我一般很烦这种名字,简单理解就是将动态数据和模板结合渲染生成最终的页面,再形象一点就是这类似于汽车引擎将燃料和空气转化为动力,模板引擎将数据和模板转化为网页内容。

首先SpringBoot是支持Thymeleaf的,内部已经对Thymeleaf模板的版本进行控制了。此处只需要引入起步依赖即可。可以点开看一下。

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

2.2配置application.yml文件

我们的静态html文件要放到templates目录下面,因为它默认访问的路径也就是prefix就是templates,后缀是.html,所以下面这个配置可以不用配置,此处想让大家知道,它的配置属性类是哪个,ctrl+鼠标点击prefix,会进入它的属性配置类ThymeleafProperties。

spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

可以看到它很多已经有默认值了,我们都不用配置,但是我们要知道怎么查看,其他的查看方式也是如此,并且查看它的所有配置属性类更有利于我们去了解这个技术。

2.3创建html文件

我这里直接告诉大家一个简单方法,因为我们创建完普通的html文件还要引入thymeleaf,你每创建一个文件都要引入比较麻烦,所以直接创建一个模板文件,这样每次直接创建这个模板文件即可

其实就加了一个东西,xmlns="http://www.thymeleaf.org",因为你不引入你就无法使用它的动态属性,这样我们再创建文件就可以右键选择我们定制的模板。

类似的还有mapper的映射文件,它的头部也需要这样定制一个模板。

2.4如何使用前端和后端

2.4.1前端

此处我只介绍某一个写法,其他可以自己去尝试或去b站看相关博主的视频系统的学习。

th:xxx="${key}",至于这个xxx是什么有很多,每种也有不同的用法和意思。

​​​​​​​

例如:th:text="${titleName}",就是给标签的内容赋值,如果你后端的model没有titleName前端也不会报错。容错性也很好,不会说没有导致前端页面瘫痪。

2.4.2后端

2.4.3结果展示

可见“默认的title”已经被动态的替换掉了。

3.总结

你可以不熟练,毕竟我们是搞后端的,而且就算是全栈,也是前后端分离的,也不会用thymeleaf,直接就是返回数据,但是呢,我们要能看懂别人写的,毕竟有的公司项目已经经过了很多人的手了,能看懂它写的就行,然后慢慢去模仿他们使用就行,接下来自己去学习一下thymeleaf的各种常用的属性操作即可。

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

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

相关文章

关于决策树的一些介绍(二)

我之前写过一篇关于决策树的文章&#xff0c;但在那篇文章里没有提及基尼系数&#xff0c;信息熵与信息增益等相关问题&#xff0c;所以我将在这篇文章中进行补充。 一、 决策树的一份python代码 首先&#xff0c;我先给出一份最基础的决策树代码&#xff0c;在这里&#xff…

在 Python 画图中同时设置中英文字体

前言 在使用matplotlib.pyplot画图时&#xff0c;默认情况下都是黑体字&#xff0c;很不美观。如果含有中文&#xff0c;可能无法显示&#xff1b;显示了中文之后英文字体就不能使用。本文针对这些问题逐一给出解决方案。 同时设置中英文字体 我们都知道&#xff0c;按照下面的…

00898 互联网软件应用与开发自考复习

资料来自互联网软件应用与开发大纲 南京航空航天大学 高纲4295和JSP 应用与开发技术(第 3 版) 马建红、李学相 清华大学出版社2019年 识记:要求考生能够识别和记忆本课程中有关互联网软件开发与应用的概念性内容,并能够根据考核的不同要求,做出正确的表述、选择和判断。领会…

合资油车断崖式崩盘,买车的千万慎重了

文 | AUTO芯球 作者 | 雷慢 合资车&#xff0c;燃油车全体大逃亡的时候来了&#xff0c; 你敢信吗&#xff0c;8月份&#xff0c;国内新能源汽车零售渗透率达到54%&#xff0c; 我给大家讲个冷笑话&#xff0c; 几个月前还有车企老总说什么&#xff0c; “只要传统车企一发…

linux 操作系统下的curl 命令介绍和使用案例

linux 操作系统下的curl 命令介绍和使用案例 1. curl 命令简介 curl 是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载&#xff0c;是综合传输工具&#xff0c;但传输的协议主要是 HTTP/HTTPS 和 FTP。curl 还支持很多种类型的服务器认证方式&#…

网络(三)——协议是什么???

文章目录 协议的概念结构化数据网络计算机服务端定制协议客户端代码 协议的概念 计算机之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息。要想传递各种不同的信息&#xff0c;就需要约定好双方的数据格式。 结构化数据 我们知道TCP是面向…

Linux基础---07文件传输(网络和Win文件)

Linux文件传输地图如下&#xff0c;先选取你所需的场景&#xff0c;若你是需要Linux和Linux之间传输文件就查看SCP工具即可。 一.下载网站文件 前提是有网&#xff1a; 检查网络是否畅通命令&#xff1a;ping www.baidu.com&#xff0c;若有持续的返回值就说明网络畅通。Ctr…

请查收《网安问答秘籍》

在数字化日益普及的今天&#xff0c;网络安全威胁层出不穷&#xff0c;保护个人隐私和数据安全成为每个人的必修课。秘籍精选了最实用的网络安全问答&#xff0c;广大群众及时了解网络安全知识&#xff0c;提升网络安全意识&#xff0c;有效防范网络诈骗&#xff0c;确保个人信…

获取无人机经纬度是否在指定禁飞区内

1. 计算公式: (AB X AE ) * (CD X CE) >= 0 && (DA X DE ) * (BC X BE) >= 0 参考: 判断点是否在矩形框(多边形)内_qt opencv 判断一点是否在矩形内-CSDN博客 2.测试结果: 3.实现完整代码: #include<cstd

【系统规划与管理师】【案例分析】【考点】【答案篇】第7章 IT服务持续改进

【问题篇】☞【系统规划与管理师】【案例分析】【考点】【问题篇】第7章 IT服务持续改进 【移动端浏览】☞【系统规划与管理师】【案例分析】【模拟考题】章节考题汇总&#xff08;第7章&#xff09;&#xff08;答案篇&#xff09;&#xff08;共11个知识点&#xff09; 第7章…

在服务器上开Juypter Lab教程(远程访问)

在服务器上开Juypter Lab教程&#xff08;远程访问&#xff09; 文章目录 在服务器上开Juypter Lab教程&#xff08;远程访问&#xff09;一、安装anaconda1、安装anaconda2、提权限3、运行4、同意协议5、安装6、是否要自动初始化 conda7、结束8、检查 二、Anaconda安装Pytorch…

使用Docker挂载部署JAVA项目

用于需要使用Docker容器部署项目&#xff0c;但可能部署包需多次调整的场景&#xff0c;这种部署方式可以减少镜像制作的过程&#xff1b; 推荐几个使用Docker安装环境的文章&#xff1a; 1.Nocas: https://blog.csdn.net/weixin_44700323/article/details/140995859 2.Mysql: …

学习大数据DAY57 新的接口配置

作业  完成 API 接口和文件的接入, 并部署到生产调度平台, 每个任务最后至少 要有两条 不报错 的日志, 报错就驳回作业  作业不需要复制日志 API Appliation Program Interface 应用程序接口 > JSON 的地址 客户需求: 把 https://zhiyun.pub:9099/site/c-class…

从“看”到“管”:EasyCVR安防监控平台如何推动城市管理模式的转型升级

在21世纪的今天&#xff0c;随着城市化进程的加速推进&#xff0c;城市规模不断扩大&#xff0c;人口密集度显著增加&#xff0c;城市管理面临着前所未有的挑战。从公共安全、交通管理到环境保护、应急响应&#xff0c;每一个领域都对城市的治理能力和效率提出了更高要求。在这…

PowerShell install 一键部署Oracle23ai

Oracle23ai前言 Oracle Database 23ai Free 让您可以充分体验 Oracle Database 的能力,世界各地的企业都依赖它来处理关键任务工作负载。 Oracle Database Free 的资源限制为 2 个 CPU(前台进程)、2 GB 的 RAM 和 12 GB 的磁盘用户数据。该软件包不仅易于使用,还可轻松下载…

【LLM多模态】CogVideoX文生视频模型结构和训练过程

note 通过两阶段训练3D VAE&#xff0c;对视频进行压缩编码 第一阶段&#xff1a;在较低分辨率和较少帧数的视频上进行训练&#xff0c;学习压缩和重建视频的基本能力第二阶段&#xff1a;在更长的视频上训练&#xff0c;提高模型处理长视频的能力&#xff0c;同时保持帧与帧之…

JavaEE:文件内容操作练习(三)

文章目录 文件内容操作练习练习1练习2练习3 文件内容操作练习 练习1 扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件. package javaEE.fileIO;import java.io.File; import java.util.Scanner;public class O {private…

数据结构基础讲解(八)——树和二叉树专项练习(上)

本文数据结构讲解参考书目&#xff1a; 通过网盘分享的文件&#xff1a;数据结构 C语言版.pdf 链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwdze8e 提取码: ze8e 数据结构基础讲解&#xff08;七&#xff09;——数组和广义表专项练习-CSDN博客 个人主页&#x…

【初阶数据结构】详解树和二叉树(一) - 预备知识(我真的很想进步)

文章目录 前言1. 树1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用 2. 二叉树2.1 二叉树的概念2.2 现实中的二叉树2.3 特殊的二叉树2.4 二叉树的性质2.5 二叉树概念和性质的一些习题 前言 初阶数据结构篇马上要迎来了一个新的成员&#xff0c;那就是"二叉…

这才是导师认可的论文 / 开题技术路线图

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 1. 技术路线图的常见框架结构 技术路线图根据研究内容和实验设计的不同&#xff0c;可以采用多种结构。以下是三种常见的技术路线图框架&#xff1a; 1.1 顺序式框架 适用领…