springboot-基础-thymeleaf配置+YAML语法

news2024/11/18 7:43:35

备份笔记。所有代码都是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文件:

  1. <parent><properties>下加上
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  2. <dependencies>下添加一个thymeleaf依赖:

<!-- Thymeleaf  -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
  1. 开启热部署(非必须):添加了这个之后,重启Spring Boot,修改任意代码,就能在控制台看到自动重启。
<!-- 热部署 -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-devtools</artifactId>
		    <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
		</dependency>
  1. 修改完之后,右键项目名–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: HTML5
    encoding: UTF-8
    servlet:
      content-type: text/html; charset=utf-8
    cache: false

application.yml

spring: 
  profiles:
    active: dev   

YAML语法

最重要的几条:

  1. 大小写敏感
  2. 缩进代表层级关系,不能用tab,空格2或4个
  3. 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'  #可以使用双引号或者单引号包裹特殊字符
    - newline
      newline2    
#字符串可以拆成多行,每一行会被转化成一个空格
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 league
 home run record in 1998.
  • |是保留换行符,一般用在配置html片段
stats: |
 65 Home Runs
 0.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: 
    <<: *CENTER
    r: 10
# sample2={other=haha, x=1, y=2, r=10}
sample2:
    << : [ *CENTER, *BIG ]
    other: haha
# 这里除了合并之外还覆盖了r的值    
sample3:
    << : [ *CENTER, *BIG ]
    r: 100

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

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

相关文章

算法沉淀——动态规划之回文串问题(上)(leetcode真题剖析)

算法沉淀——动态规划之回文串问题 01.回文子串02.最长回文子串03.分割回文串 IV04.分割回文串 II05.最长回文子序列06.让字符串成为回文串的最少插入次数 01.回文子串 题目链接&#xff1a;https://leetcode.cn/problems/palindromic-substrings/ 给你一个字符串 s &#xf…

SpringMVC 学习(九)之拦截器

目录 1 拦截器介绍 2 创建一个拦截器类 3 配置拦截器 1 拦截器介绍 在 SpringMVC 中&#xff0c;拦截器 (Interceptor) 是一种用于拦截 HTTP 请求并在请求处理之前或之后执行自定义逻辑的组件。拦截器可以用于实现以下功能&#xff1a; 权限验证&#xff1a;在请求处理之前…

python学习笔记-内置异常

概述 Python 中的异常&#xff08;Exception&#xff09;是指在程序执行过程中遇到的错误或异常情况。当程序出现异常时&#xff0c;解释器会停止当前代码的执行&#xff0c;并试图找到匹配的异常处理器来处理异常。如果没有找到合适的异常处理器&#xff0c;程序就会终止并打…

【MySQL】DCL

DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 1. 管理用户 在MySQL数据库中&#xff0c;DCL&#xff08;数据控制语言&#xff09;是用来管理用户和权限的语句集合。通过DCL语句&#xff0c;可以创建、修改、删…

高性能Server的基石:reactor反应堆模式

业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上&#xff0c;服务端server接收到IO请求后&#xff0c;是如何处理请求并最终进入业务流程的呢&#xff1f;这里不得不提到reactor反应堆模型。reactor反应堆模型来源于大师Doug Lea在 《Sacalable io …

基于51单片机烟雾报警器数码管显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机烟雾报警器数码管显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0067 1. 主要功能&#xff1a; 基于51单片机的烟雾报警器proteus仿真设…

AxureCloud配置文件详细介绍

AxureCloud配置文件详细介绍 原文地址&#xff1a;https://docs.axure.com/axure-cloud/business/custom-settings-json/ 通过修改 customsettings.json 可以修改AxureCloud私有部署的域名、端口、HTTPS、存储目录、是否开启插件等, 默认安装的路径为: C:\Program Files\Axure…

milvus Upsert api数据结构源码分析

Upsert api数据结构 该方法将实体更新插入到 Milvus 中。如果集合中已存在指定字段&#xff0c;则该操作将覆盖现有实体&#xff1b;如果指定值尚不存在&#xff0c;则插入新实体。 实现:先insert再delete&#xff0c;并限制不能修改主键列。 限制:主键的autoid必须是false。…

【JS逆向学习】猿人学 第三题 罗生门

逆向目标 网址&#xff1a; 目标&#xff1a;session请求 逆向分析 首先分析网络请求&#xff0c;我们发现每次的翻页请求都会有一个jssm请求 从启动器进去跟栈进去 现在观察一下cookie是否有变化&#xff0c;经观察没有发生变化&#xff0c;参数也没有加密&#xff0c;所…

Python打发无聊时光:10.用flask创造按键控制的网页小游戏

第一步&#xff1a;装flask库 在终端输入: pip install flask 第二步&#xff1a;完整代码 为了方便大家移植&#xff0c;我将HTML、CSS和JavaScript直接嵌到一个py文件中。 from flask import Flask, render_template_stringapp Flask(__name__)app.route(/) def game()…

智能水表预付费管理系统

智能水表预付费管理系统是当前智能水表技术的重要应用之一&#xff0c;结合了智能化管理和预付费功能&#xff0c;为水务公司和用户提供了便捷、高效的用水管理解决方案。该系统利用先进的科技手段&#xff0c;实现了水表抄表、计费和管理的自动化&#xff0c;为用户带来更便捷…

如何删除右键菜单中的WPS与百度网盘

WPS 打开"开始菜单" &#xff0c;搜索WPS&#xff0c;打开文件位置双击 WPS Office 工具选择配置工具 百度网盘 同时按住 Win键 和 R键 在运行中输入 regedit 打开注册表 复制粘贴&#xff0c;转到下面两个文件&#xff0c;直接删除即可 计算机\HKEY_CLASSES…

nginx实现http反向代理及负载均衡

目录 一、代理概述 1、代理概念 1.1 正向代理&#xff08;Forward Proxy&#xff09; 1.2 反向代理&#xff08;Reverse Proxy&#xff09; 1.3 正向代理与反向代理的区别 2、同构代理与异构代理 2.1 同构代理 2.2 异构代理 2.3 同构代理与异构代理的区别 二、四层代…

设计模式(五)-观察者模式

前言 实际业务开发过程中&#xff0c;业务逻辑可能非常复杂&#xff0c;核心业务 N 个子业务。如果都放到一块儿去做&#xff0c;代码可能会很长&#xff0c;耦合度不断攀升&#xff0c;维护起来也麻烦&#xff0c;甚至头疼。还有一些业务场景不需要在一次请求中同步完成&…

计讯物联5G RedCap网关TG463化繁为简,推动5G赋能千行百业

5G RedCap&#xff0c;全称为Reduced Capability&#xff0c;即在5G的基础上&#xff0c;对部分功能进行化繁为简后形成的新技术标准&#xff0c;故又称轻量化5G。作为高性价比下的精简技术&#xff0c;5G RedCap技术具备成本低、低功耗、兼顾5G等特点&#xff0c;能够在确保应…

小程序--组件通信

一、父传子 与vue利用props类似&#xff0c;小程序是利用自定义属性&#xff1a;properties // components/my-nav/my-nav.js Component({// 小程序组件默认样式是隔离&#xff0c;addGlobalClass设置为true可允许外部修改样式options: {addGlobalClass: true,// 只要使用到具…

express+mysql+vue,从零搭建一个商城管理系统4--mysql数据库链接

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、创建express_service数据库二、安装mysql三、新建config文件夹四、新建config/db.js五、index.js引入db.js文件六、启动项目预览总结 前言 需求&#xff1a;主要学习express&#xff0c;所以先写service…

MarkDown实用技巧:MarkDown中如何实现换行?

MarkDown实用技巧&#xff1a;MarkDown中如何实现换行&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望…

YOLOv8改进 | 独家创新篇 | 结合SOTA思想利用双主干网络改进YOLOv8(全网独家创新,最重磅的更新)

一、本文介绍 本文给大家带来的改进机制是结合目前SOTAYOLOv9的思想利用双主干网络来改进YOLOv8(本专栏目前发布以来改进最大的内容,同时本文内容为我个人一手整理全网独家首发 | 就连V9官方不支持的模型宽度和深度修改我都均已提供,本文内容支持YOLOv8全系列模型从n到x均可…

达梦数据库把日志数据按天统计不同状态的数据,实现字段行转列与根据id分组

1、这是日志表记录的数据&#xff0c;现在需要统计出每个app_id各个警告类型alarm_type的总数 2、先实现行转列&#xff0c;把三个alarm_type值转成列字段 SQL select app_id,count(CASE WHEN alarm_typeconcurrency THEN 1 ELSE null END) AS currentCount,count(CASE WHEN …