springboot-基础-thymeleaf配置+YAML语法
备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决!
目录
- 配置thymeleaf
- thymeleaf举例
- 参数设置
- yaml
- 基础知识
- YAML语法
- 报错:Expecting a 'Mapping' node but got ''
- 其他语法
spring boot不推荐使用jsp。thymeleaf是一个XML/XHTML/HTML5模板引擎,可以用作静态建模,thymeleaf主要以属性的方式加入到html标签重,当浏览器解析html时,如果某个属性没有,就会被忽略。所以thymeleaf的模板可以通过浏览器直接打开展示,而不用像jsp一样要启动服务器才能看到结果。这样更有利于前后端分离。
配置thymeleaf
修改pom.xml文件:
-
<parent><properties>下加上
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> -
在
<dependencies>下添加一个thymeleaf依赖:
<!-- Thymeleaf --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
- 开启热部署(非必须):添加了这个之后,重启Spring Boot,修改任意代码,就能在控制台看到自动重启。
<!-- 热部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 这个需要为 true 热部署才有效 --></dependency>
- 修改完之后,右键项目名–maven–update project
注意:
<parent><artifactId>spring-boot-starter-parent</artifactId>
这个是一个特殊的starter,它用来提供相关的Maven默认依赖,用了它之后,常用的包依赖就可以省去version标签。
Spring Boot具体提供了哪些jar包的依赖,可以看maven本地仓库
F:\eclipse\maven\localRespository\org\springframework\boot\spring-boot-dependencies\2.1.7.RELEASE\spring-boot-dependencies-2.1.7.RELEASE.pom
thymeleaf举例
文件结构:

HelloController.java
package com.example.demo;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class HelloController {@RequestMapping("/")public String index(ModelMap map) {map.addAttribute("host", "https://www.baidu.com/");// 这里return就是去index.html了return "index";}
}
index.html
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8" /><title>index</title>
</head>
<body>
<h1 th:text="${host}">Hello World</h1>
</body>
</html>
Run as spring boot app之前,浏览器打开index.html显示的是Hello World,运行之后

参数设置
Thymeleaf要修改默认参数配置的话,复制要修改的属性到src/main/resources/application.properties,如修改模板文件的扩展名、类型和路径等。比如:
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
#缓存设置为false, 这样修改之后马上生效,便于调试
spring.thymeleaf.cache=false
修改完右键项目名–maven–update project,然后再重新run as spring boot app
yaml
基础知识
由于后面配置mybaits时数据库要写的东西比较多,所以改用YAML语言来配置。
SpringBoot底层会把application.yml解析为application.properties。
在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如:
application-dev.yml:开发环境
application-test.yml:测试环境
application-prod.yml:生产环境
至于哪个具体的配置文件会被加载,需要在application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
所以这里我暂时在src/main/resources下写俩yml,一个是application.yml,一个是application-dev.yml
先装一个yml插件 YEditor。在Eclipse Marketplace没找到,用跟装mybatis-generator一样的方法装https://marketplace.eclipse.org/content/yedit
application-dev.yml
spring:thymeleaf:mode: HTML5encoding: UTF-8servlet:content-type: text/html; charset=utf-8cache: false
application.yml
spring: profiles:active: dev
YAML语法
最重要的几条:
- 大小写敏感
- 缩进代表层级关系,不能用tab,空格2或4个
- key: value,value前要加一个空格
报错:Expecting a ‘Mapping’ node but got ‘’
此处没有对齐。重新写一遍就可以了。注意优先采用自动补全。
其他语法
也可以使用flow格式
key:
c1: val1 ====> key: {c1: val1, c2: val2}
c2: val2
-
属性值支持数值,字符串,boolean(true/false),数组
-
#是注释行
boolean: - TRUE #true,True都可以- FALSE #false,False都可以
float:- 3.14- 6.8523015e+5 #可以使用科学计数法
int:- 123- 0b1010_0111_0100_1010_1110 #二进制表示
null:nodeName: 'node'parent: ~ #使用~表示null
string:- 哈哈- 'Hello world' #可以使用双引号或者单引号包裹特殊字符- newlinenewline2
#字符串可以拆成多行,每一行会被转化成一个空格
date:- 2018-02-17
#日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime: - 2018-02-17T15:02:31+08:00
#时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
-
一个 — 和一个 … 之间包裹的是一个文档
-
把数字和布尔类型强转为字符串
string:- !!str 54321- !!str true
- 将数组解析为set
简单理解,转化的内容就是:[{Ken Griffy=58}, {Mark McGwire=65}, {Sammy Sosa=63}],重复的Sammy Sosa去掉;
--- !!set
- Mark McGwire: 65
- Sammy Sosa: 63
- Sammy Sosa: 63
- Ken Griffy: 58
- >是在字符串中折叠换行
这里是为accomplishment设置一个很长的字符串作为值,但是每行文本前要有一个空格。
accomplishment: >Mark set a major leaguehome run record in 1998.
- |是保留换行符,一般用在配置html片段
stats: |65 Home Runs0.278 Batting Average
# 如:
phraseTemplate: |<p> some</p>
- 重复的内容可以使用锚点定义
hr:
- Mark McGwire
- &SS Sammy Sosa #定义锚点
rbi:
- *SS #使用,就是这里会被展开为Sammy Sosa
- Ken Griffey
SS: &SS Sammy Sosa # 这里必须加SS: 不能只写&SS Sammy Sosa
hr:- Mark McGwire- *SS
rbi:- *SS - Ken Griffey
#如果需要锚定一个数组
default: &default- Mark McGwire- Sammy Sosa
hr: *default #这里hr和default必须写在一行
- 合并内容
主要与锚点配合使用,将一个锚点的内容直接合并到一个对象中
merge:- &CENTER { x: 1, y: 2 }- &LEFT { x: 0, y: 2 }- &BIG { r: 10 }- &SMALL { r: 1 }
# sample1={r=10, y=2, x=1}
sample1: <<: *CENTERr: 10
# sample2={other=haha, x=1, y=2, r=10}
sample2:<< : [ *CENTER, *BIG ]other: haha
# 这里除了合并之外还覆盖了r的值
sample3:<< : [ *CENTER, *BIG ]r: 100
相关文章:
springboot-基础-thymeleaf配置+YAML语法
备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决! 目录 配置thymeleafthymeleaf举例参数设置yaml基础知识YAML语法报错:Expecting a Mapping node but got 其他语法 spring boot不推荐使用jsp。thymeleaf是一个XML/XHTML/HTM…...
深入理解分库、分表、分库分表
前言 分库分表,是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案,所谓"分库分表",根本就不是一件事儿,而是三件事儿,他们要解决的问题也都不一样,这三个事儿分别是"只…...
Oracle中序列
1. Sequence 定义 在Oracle中可以用SEQUENCE生成自增字段。Sequence序列是Oracle中用于生成数字序列的对象,可以创建一个唯一的数字作为主键。 2. 为什么要用 Sequence 你可能有疑问为什么要使用序列? 不能使用一个存储主键的表并每次递增吗…...
蓝牙耳机和笔记本电脑配对连接上了,播放设备里没有显示蓝牙耳机这个设备,选不了输出设备
环境: WIN10 杂牌蓝牙耳机6s 问题描述: 蓝牙耳机和笔记本电脑配对连接上了,播放设备里没有显示蓝牙耳机这个设备,选不了输出设备 解决方案: 1.打开设备和打印机,找到这个设备 2.选中这个设备&#…...
Cadence Allegro PCB设计88问解析(三十四) 之 Allegro 中 DDR等长处理
一个学习信号完整性仿真的layout工程师 在进行PCB设计时 ,会遇到一些单端的信号要做等长处理,比如DDR的数据线,交换机之间的数据线之类的。这时需要我们建立match group,来做等长。下面简单介绍在Allegro中怎么做等长:…...
向爬虫而生---Redis 探究篇2<redis集群(1)>
前言: 经常会遇到这样的事,redis运行一段时间以后,就会出现迟钝和卡壳! 这时候,说明已经到了瓶颈期了,需要用到redis集群了! 那么,弄明白集群的几个概念是必要的,我用案例来讲,,, 正文: 当需要处理大量数据或提供高可用性和性能时,Redis集群是一种常见的解决方案。…...
[云原生] 二进制安装K8S(上)搭建单机matser、etcd集群和node节点
一、单机matser预部署设计 目前Kubernetes最新版本是v1.25,但大部分公司一般不会使用最新版本。 目前公司使用比较多的:老版本是v1.15,因为v1.16改变了很多API接口版本,国内目前使用比较多的是v1.18、v1.20。 组件部署ÿ…...
乘积尾零(蓝桥杯)
文章目录 乘积尾零题目描述代码 乘积尾零 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零? 5650 454…...
项目解决方案: 实时视频拼接方案介绍
目 录 1、实时视频拼接概述 2、适用场景 3、系统介绍 3.1拼接形式 3.1.1横向拼接 3.1.2纵向拼接 3.2前端选择 3.2.1前端类型 3.2.2推荐配置 3.3后端选择 3.3.1录像回放 3.3.2客户端展示 4、拼接方案介绍 4.1基于4K摄像机的拼接方案 4.1.1系统架构…...
雾锁王国Enshrouded服务器CPU内存配置怎么选择?
雾锁王国/Enshrouded服务器CPU内存配置如何选择?阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置,支持4人玩家畅玩,自带10M公网带宽,1个月90元,3个月271元,幻兽帕鲁服务器申请页面 https://t.aliyun.com…...
yolov9,使用自定义的数据训练推理
[源码 🐋]( GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information) [论文 📘](arxiv.org/pdf/2402.13616.pdf) 论文摘要:本文介绍了一种新的目标检测…...
企业文件图纸加密有哪些?图纸文件加密防泄密软件如何选?
在现在的市场发展中,对于企业的图纸文件安全问题越来越重视,如设计图纸,重要文件等,一旦泄漏就会给企业造成巨大的经济损失。所以对企业管理者来讲,如何才能选择一款好用的适合本企业的图纸文件加密软件是非常重要的&a…...
phpldapadmin This base cannot be created with PLA
phpldapadmin This base cannot be created with PLA 1、问题描述2、问题分析3、解决方法:创建根节点 1、问题描述 安装phpldapadmin参考链接: https://blog.csdn.net/OceanWaves1993/article/details/136048686?spm1001.2014.3001.5501 刚安装完成phpldapadmin&…...
如何开发自己的npm包并上传到npm官网可以下载
目录 搭建文件结构 开始编写 发布到npm 如何下载我们发布的npm包 搭建文件结构 先创建新文件夹,按照下面的样子布局 .├── README.md //说明文档 ├── index.js //主入口 ├── lib //功能文件 └── tests //测试用例 然后再此根目录下初始化package包 npm init…...
Linux Shell脚本练习(一)
一、 Linux下执行Shell脚本的方式: 1、用shell程序执行脚本: a、根据你的shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等 b、程序的第一行#!/bin/bash里面指明了shell类型的,比如#!/…...
面试数据库篇(mysql)- 11主从同步
原理 MySQL主从复制的核心就是二进制日志 二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。 复…...
Python中的os库
一.OS库简介 OS是Operating System的简写,即操作系统。 OS库是一个操作系统接口模块,提供一些方便使用操作系统相关功能的函数。 二.OS库常用函数 2.1文件和目录 2.1.1:os.getcwd() 作用:返回当前工作目录,结果是…...
C++ | 使用正则表达式匹配特定形式的字符串
C | 使用正则表达式匹配特定形式的字符串 在 C 中,可以使用 <regex> 头文件提供的正则表达式库来对特定形式的字符串进行匹配操作。 常用的正则表达式模式语法 普通字符: 普通字符会按照其字面意义进行匹配,例如 a 会匹配字符 a。 转…...
计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】
文章目录 前言第一章 计算机组成原理 概述及各种码1.1 计算机硬件的基本组成1.1.1 存储器1.1.2 运算器1.1.3 控制器 1.2 计算机的工作过程1.3 计算机的性能指标1.4 各个字长区别与联系 第二章 数据的表示与运算2.1 ASCII码2.2 各种码2.3 浮点数 总结 前言 给大家整理了一下计算…...
基于transform的scale属性,动态缩放整个页面,实现数据可视化大屏自适应,保持比例不变形,满足不同分辨率的需求
文章目录 一、需求背景:二、需求分析:三、选择方案:四、实现代码:五、效果预览:六、封装组件: 一、需求背景: 数据可视化大屏是一种将数据、信息和可视化效果集中展示在一块或多块大屏幕上的技…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
