Thymeleaf入门

Thymeleaf是前端开发模板,springboot默认支持。前端模板用法大多数是类似的jsp、thymeleaf、vue.js都有while\for\if\switch等使用,页面组件化等。

1.前端模板区别

jsp是前后端完全不分离的,jsp页面写一堆Java逻辑。
thymeleaf好处是html改造方便,可以独立预览。vue.js是完全前后端分离的。

2.快速入门

(1)新建springboot项目

# 关闭Thymeleaf的缓存 spring.thymeleaf.cache=false

(可忽略)可以开启热部署,maven,引入devtool,配置SpringbootApplication,Running Application

Update Policies ,选择 Update resources

准备index.html

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

th:text ="${name}"

创建Controller

@GetMapping("/index")

String index(Model model){
    model.setAttribute("name","html");

        return "index"
}

3.Thymeleaf语法

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title></title>
</head>
<body><!--通过${}来获取model中的变量,是ognl表达式--><p th:text="${name}">测试</p><!--字符串拼接--><p th:text="|测试-${name}|"></p><!--对象,星号选择--><ul th:object="${user}"><li th:text="*{title}"></li><li th:text="*{name}"></li><li th:text="*{age}"></li><!--if判断--><li th:if="*{isVip}=='1'" th:text="*{isVip}"></li><!--追加css--><li th:styleappend="*{isVip}=='1' ? 'margin-top:50px' : _"></li><li th:classappend="*{isVip}=='1' ? 'css_test' : _"></li></ul><style>.css_test{margin-top:50px;background-color: red;}</style><!--内联js--><script th:inline="javascript">var name =/*[[${user.name}]]*/ '李四';console.log(name);</script><!--内嵌变量 dates,${#dates.format(date, 'dd/MMM/yyyy HH:mm')}--><!--组件--><div th:replace="include::body"></div></body>
</html>

运行效果



3.引入静态文件
th:href="@{/blog/yummy-jekyll/plugins/jquery/dist/jquery.min.js}"
@表示static路径
假设html在templates目录下,
<link href="../static/blog/..."

th:href 与 href 的区别
href始终从端口开始作为根路径,如8080/channel/page/add
th:href会寻找项目路径作为根路径,如8080/dx/channel/page/add
4.定义组件及使用
th:fragment="header(title,keywords)"  header是组件名称,后面是传递参数

使用方式: html页面::组件名称(参数)
th:replace="blog/yummy-jekyll/header::header('首页','My Blog')"  

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

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

相关文章

非Spring环境 | Mybatis-Plus插入数据返回主键两种方式(注解或XML)

废话不多说&#xff0c;直接撸代码: <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace&qu…

【Spring】什么是Bean的生命周期及作用域,什么是Spring的执行流程?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 在前面的播客中讲解了如何从Spring中存取Bean对象&#xff0c;那么本篇我们来讲解Bean对象的生命周期是什么&#xff0c;Bean对象的6种作用域分别是什么&#xff0c;都有哪些区别&#xff…

filebeat吃爆内存问题

filebeat吃了很多内存&#xff0c;直接导致了系统OOM 原因分析&#xff1a;https://developer.aliyun.com/article/241161#slide-0 官网配置文件解析&#xff1a; filebeat.reference.yml | Filebeat Reference [8.9] | Elastic 定义每个采集器在获取文件时使用的缓冲区大小…

通过STM32内部ADC将烟雾传感器发送的信号值显示在OLED上

一.CubeMX配置 首先我们在CubeMX配置ADC1, 设置一个定时器TIM2定时1s采样一次以及刷新一次OLED&#xff0c; 打开IIC用于驱动OLED显示屏。 二.程序 在Keil5中添加好oled的显示库&#xff0c;以及用来显示的函数、初始化函数、清屏函数等。在主程序中初始化oled,并将其清屏。…

linux-----用户的一些操作

1介绍 用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房子&#xff0c;能够正常入驻) Linux系统则允许同一时刻多个用户同时登陆&#xff0c;登陆后相互之间操作并不影响。但是Windows不允许同一时刻多个用户登陆系统。具体介绍可以&#xff1a; 6-Linux用户管…

【RTT驱动框架分析02】-串口驱动分析

串口驱动学习 0.串口驱动的使用方法 //定义一个时间 struct rt_event system_event; #define SYS_EVENT_UART_RX_FINISH 0x00000001 /* UART receive data finish event *//*串口接收回调函数 Receive data callback function */ static rt_err_t uart_input(rt_device_t …

掌握Python的X篇_16_list的切片、len和in操作

接上篇掌握Python的X篇_15_list容器的基本使用&#xff0c;本篇进行进一步的介绍。 文章目录 1. list的索引下标可以是负数2. 切片&#xff08;slice&#xff09;2.1 切片基础知识2.2 如何“取到尽头”2.3 按照步长取元素2.4 逆序取值 3. len函数获取lis的元素个数4. in操作符…

rocketmq客户端本地日志文件过大调整配置(导致pod缓存cache过高)

现象 在使用rocketmq时&#xff0c;发现本地项目中文件越来越大&#xff0c;查找发现在/home/root/logs/rocketmqlog目录下存在大量rocketmq_client.log日志文件。 配置调整 开启slf4j日志模式&#xff0c;在项目启动项中增加-Drocketmq.client.logUseSlf4jtrue因为配置使用的…

手把手教你从0入门线段树~

1. 什么是线段树? 1.1 初探线段树 定义&#xff1a;线段树是一种用于解决区间查询问题的数据结构&#xff0c;是一种广义上的二叉搜索树。 原理&#xff1a;它将一个区间划分为多个较小的子区间&#xff0c;并为每个子区间存储一些有用的信息&#xff0c;例如最大值、最小值…

从苏宁电器到卡巴斯基(第二部)第32篇:我当高校教师的这几年 VIII

目录 我的评教排名竟然这么高 合约结束X无法转正X原来都没有编 寻求出路

如何降低TCP在局域网环境下的数据传输延迟

以Ping为例。本案例是一个测试题目&#xff0c;只有现象展示&#xff0c;不含解决方案。 ROS_Kinetic_26 使用rosserial_windows实现windows与ROS master发送与接收消息_windows 接收ros1 消息 什么是ping&#xff1f; AI&#xff1a; ping是互联网控制消息协议&#xff08;…

有关bind一些困惑解答

先看如下代码&#xff1a; double my_divide (double x, double y) {return x/y;}class A { public:void fun_3(int k,int m) {std::cout << "print: k "<< k << ", m " << m << std::endl;} }; int main() {A a;//f5的类…

【每日一题Day280】LC141环形链表 | 快慢指针 哈希表

环形链表【LC141】 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的…

【Spring Boot】

目录 &#x1f36a;1 Spring Boot 的创建 &#x1f382;2 简单 Spring Boot 程序 &#x1f370;3 Spring Boot 配置文件 &#x1f36e;3.1 properties 基本语法 &#x1fad6;3.2 yml 配置文件说明 &#x1f36d;3.2.1 yml 基本语法 &#x1f369;3.3 配置文件里的配置类…

如何将ubuntu LTS升级为Pro

LTS支持周期是5年&#xff1b; Pro支持周期是10年。 Ubuntu Pro专业版笔记 步骤&#xff1a; 打开“软件和更新” 可以看到最右侧的标签是Ubuntu Pro。 在没有升级之前&#xff0c;如果使用下面两步&#xff1a; sudo apt updatesudo apt upgrade 出现如下提示&#xff…

torch使用GPU加速

下载cuda 下载torch 下载与python版本适配的GPU版torch 使用GPU加速 将模型&#xff0c;函数&#xff0c;数据都放入GPU中 将模型加入GPU# 自定义模型要继承torch.nn.Module才能使用GPU加速 # 在模型后加cuda函数 model TransE(num_nodes, num_relations, hidden_channel…

【低代码专题方案】iPaaS运维方案,助力企业集成平台智能化高效运维

01 场景背景 随着IT行业的发展和各家企业IT建设的需要&#xff0c;信息系统移动化、社交化、大数据、系统互联、数据打通等需求不断增多&#xff0c;企业集成平台占据各个企业领域&#xff0c;成为各业务系统数据传输的中枢。 集成平台承接的业务系统越多&#xff0c;集成平台…

【数据结构】时间复杂度和空间复杂度

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 时间复杂度和空间复杂度 前…

diffusion model(五)stable diffusion底层原理(latent diffusion model, LDM)

LDM: 在隐空间用diffusion model合成高质量的图片&#xff01; [论文地址] High-Resolution Image Synthesis with Latent Diffusion Models [github] https://github.com/compvis/latent-diffusion 文章目录 LDM: 在隐空间用diffusion model合成高质量的图片&#xff01;系列…

Kotlin线程的基本用法

线程的基本用法 新建一个类继承自Thread&#xff0c;然后重写父类的run()方法 class MyThread : Thread() {override fun run() {// 编写具体的逻辑} }// 使用 MyThread().start()实现Runnable接口 class MyThread : Runnable {override fun run() {// 编写具体的逻辑} }// …