SpringBoot学习笔记【part12】Web开发——Thymeleaf模板引擎

别再手动复制粘贴了!用EasyPoi 4.3.0+模板一键生成带表格和图片的Word报告(SpringBoot实战) 本文详细介绍了如何使用EasyPoi 4.3.0+在SpringBoot项目中实现Word报告的自动化生成,包括动态表格和循环图片的嵌入。通过模板导出技术,开发者可以大幅提升文档生成效率,避免手动复制粘贴的繁琐操作,适用于人事档案、财务报表等多种场景。 阅读详情

SpringBoot 学习笔记 Part12

1. thymeleaf简介

SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染。

Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even plain text.

即 thymeleaf 是现代化、服务端的Java模板引擎。


2. 基本语法

  • 表达式

    表达式名语法作用
    变量取值${…}获取请求域、session域、对象等值
    选择变量*{…}获取上下文对象值
    消息#{…}获取国际化等值
    链接@{…}生成链接
    片段表达式~{…}jsp:include 作用,引入公共页面片段
    行内表达式[[…]]HTML 文本中嵌套表达式
  • 字面量

    文本值:‘one text’ , ‘another one’

    数字:0 , 34 , 3.0 , 12.3

    布尔值:true , false

    空值:null

    变量:one,two

  • 文本操作

    字符串拼接: +

    变量替换: |The name is ${name}|

  • 数字运算

    运算符: + , - , * , / , %

  • 布尔运算

    运算符: and , or

    一元运算: ! , not

  • 比较运算

    比较: > , < , >= , <= ( gt , lt , ge , le )

    等式: == , != ( eq , ne )

  • 条件运算

    If-then: (if) ?(then)

    If-then-else: (if) ? (then) :(else)

    Default: (value) ? :(defaultvalue)

  • 特殊操作

    无操作: _


3. 标签th:attr

th:attr 用来设置属性值。

  • 设置单个值:
<form action="subscribe.html" th:attr="action=@{/subscribe}">
  <fieldset>
    <input type="text" name="email" />
    <input type="submit" value="Subscribe!" th:attr="value=#{subscribe.submit}"/>
  </fieldset>
</form>
  • 设置多个值:
<img src="../../images/gtvglogo.png"  th:attr="src=@{/images/gtvglogo.png},title=#{logo},alt=#{logo}" />
  • 以上两个的代替写法:
<input type="submit" value="Subscribe!" th:value="#{subscribe.submit}"/>
<form action="subscribe.html" th:action="@{/subscribe}">

所有h5兼容的标签写法可参考官方文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#setting-value-to-specific-attributes


4. 迭代

foreach:

  • 迭代普通类型:
<tr th:each="prod : ${prods}">
        <td th:text="${prod.name}">Onions</td>
        <td th:text="${prod.price}">2.41</td>
        <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
  • 迭代对象:
<tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'">
  <td th:text="${prod.name}">Onions</td>
  <td th:text="${prod.price}">2.41</td>
  <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>

5. 条件运算

if:

<a href="comments.html"
th:href="@{/product/comments(prodId=${prod.id})}"
th:if="${not #lists.isEmpty(prod.comments)}">view</a>

switch:

<div th:switch="${user.role}">
  <p th:case="'admin'">User is an administrator</p>
  <p th:case="#{roles.manager}">User is a manager</p>
  <p th:case="*">User is some other thing</p>
</div>

6. 属性优先级

所有Thymeleaf属性都有一个数字优先级,以建立他们在标签中的顺序执行。这个顺序是:

OrderFeatureAttributes
1Fragment inclusionth:include th:replace
2Fragment iterationth:each
3Conditional evaluationth:if th:unless th:switch th:case
4Local variable definitionth:object th:with
5General attribute modificationth:attr th:attrprepend th:attrappend
6Specific attribute modificationth:value, th:href, th:src, etc.
7Text (tag body modification)th:text th:utext
8Fragment specificationth:fragment
9Fragment removalth:remove

7. thymeleaf的使用

首先,我们需要引入thymeleaf的starter场景启动器。

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

我们可以在 springboot 中找到 thymeleaf 的自动配置类,这说明springboot已经为我们做好了默认配置的工作。

@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(ThymeleafProperties.class)
@ConditionalOnClass({ TemplateMode.class, SpringTemplateEngine.class })
@AutoConfigureAfter({ WebMvcAutoConfiguration.class, WebFluxAutoConfiguration.class })
public class ThymeleafAutoConfiguration { }

查看 springboot 的 thymeleaf 的自动配置类,在自动配置类里我们可以找到一些已经配好的重要组件,如spring模板引擎 SpringTemplateEngine、thymeleaf 的视图解析器 ThymeleafViewResolver 等。并且我们发现所有thymeleaf的配置值都在 ThymeleafProperties 类里,这个是存储配置信息的配置类,之前学习过。

public static final String DEFAULT_PREFIX = "classpath:/templates/";
public static final String DEFAULT_SUFFIX = ".html";  //xxx.html

ThymeleafProperties 类中这两个重要属性表明了我们开发的页面路径和映射规则,因此我们不需要别的配置,直接进行开发就行了。

注:在html页面开发中为了更方便地使用thymeleaf标签属性,应在标签中引入thymeleaf的命名空间 xmlns:th=“http://www.thymeleaf.org”,如下:

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

</body>
</html>

8. 开发小案例

h5中编写如下:

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

<h1 th:text="${msg}">Hello H5 !</h1>
<h2>
  <a href="www.4399.com" th:href="${link}">去百度</a>
</h2>

</body>
</html>

Controller中编写如下:

@Controller
public class thymeleafController {

    @GetMapping("/thymeleaf")
    public String gotoThymeleaf(Model model){
        model.addAttribute("msg","Hello Thymelef !");
        model.addAttribute("link","http://www.baidu.com");
        return "success";
    }
}
springboot项目实战-使用thymeleaf模板引擎 Spring Boot对Web开发流程提供完整的支持,包括从前端到后台的开发,再到数据库的操作。使用Spring Boot开发Web工程有两种类型:前后端完全分离。这种方式是前端开发者和后端开发者完全分离地进行项目的开发,最后完成前后端的接口对接,这是目前国内一种流行的开发方式。前端负责页面的开发并调用后端接口展示数据,后端只负责提供API接口。使用Spring Boot自带的模板。这种方式适用于小型项目或者全栈开发人员,一般可以选择的模板包括Freemaker和Thymeleaf等。 阅读详情

相关推荐

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 990

Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)

Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)

showswoller的博客 1757

centos+apache+subversion+LDAP

yum install subversion 报错:[Errno 14] HTTP Error 416 - Requested Range Not Satisfiable 正在尝试其它镜像。 zaici

qq_41566366的博客 1544

高效实现Web开发:掌握Spring Boot 2高级模块Thymeleaf的神奇妙用

Spring Boot和Thymeleaf是Web应用程序开发中常用的框架和模板引擎。本文将介绍Spring Boot和Thymeleaf的安装和配置方法,以及Thymeleaf的表达式和基础语法。除此之外,我们还将介绍Thymeleaf的高级用法和集成案例,并讨论Thymeleaf的性能和优化建议。Thymeleaf是一个Java模板引擎,可以生成HTML、XML、JavaScript、CSS和文本等等。Thymeleaf语法简单且易于学习,它提供了多种表达式和指令,帮助用户快速地创建Web应用程序。

陈书予 8018

Cadence Allegro 17.2 PCB设计避坑指南:从焊盘制作到封装绘制的完整流程

本文详细解析了Cadence Allegro 17.2在PCB设计中的关键操作技巧,从焊盘制作到封装绘制的完整流程。通过0402电阻和2.54mm排针的实例,揭示新手常见错误及解决方案,包括焊盘参数设置、层类型区分和坐标输入规范,帮助工程师避免设计返工和生产事故。

weixin_28683391的博客 409

AI人工智能与模拟退火:碰撞出的智慧火花

本文旨在为读者全面介绍模拟退火算法在人工智能领域的应用。我们将涵盖从基础理论到实际实现的完整知识体系,帮助读者理解这一受自然界启发的优化技术如何解决复杂的计算问题。文章首先介绍模拟退火的基本概念,然后深入其工作原理和数学基础,接着通过Python实现展示具体应用,最后讨论实际应用场景和未来发展方向。模拟退火(Simulated Annealing, SA):一种受物理退火过程启发的概率性优化算法能量函数(Energy Function):评估系统状态的函数,对应优化问题的目标函数。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 452

SpringCloud微服务架构前后端分离项目实践

一款 Java 语言基于 SpringCloud、Vue、ElementUI、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,目前框架已集成了完整的RBAC权限架构和常规基础模块,前端Vue端支持多主题切换,可以根据自己喜欢的风格选择想一个的主题的个性化呈现的需

weixin_50196917的博客 5686

Linux系统监控实战:夜莺监控+categraf采集器配置全流程(附常见问题排查)

本文详细介绍了在Linux系统中使用夜莺监控和categraf采集器进行系统监控的全流程配置,包括环境准备、核心配置文件(如config.toml和procstat.toml)详解、服务集成与验证、高级监控配置实战以及常见问题排查。通过实战案例和优化建议,帮助运维人员快速构建高效的监控体系。

xray4的博客 736

SpringBoot专题学习Part13:Thymeleaf模板引擎基础语法入门

SpringBoot默认不支持jsp页面 支持模板引擎 例如Velocity Freemarker Thymeleaf等 模板引擎就是将数据填充到模板中 最终生成一个页面 不同模板引擎之间的语法不相同 SpringBoot推荐Thymeleaf 语法更简单 且功能更强大 Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎 类似JSP Velocity FreeMaker...

"✧treasure mountain✧" 8026

Arm CCA架构:硬件级机密计算与安全隔离技术解析

机密计算(Confidential Computing)通过硬件级隔离技术构建可信执行环境(TEE),是当前云安全和数据隐私保护的核心方案。Armv9-A引入的CCA架构采用物理地址空间隔离和Granule保护表(GPT)机制,实现4KB颗粒度的内存访问控制。该技术通过标准化的RMI/RSI接口规范,为虚拟化环境和安全敏感应用提供硬件级保护,特别适用于金融交易、医疗数据处理等需要严格隔离的场景。相比传统TEE方案,Arm CCA在隔离等级和动态权限管理方面具有显著优势,其Realm World设计为机密计算

weixin_30905133的博客 566

Python 爬虫实战:网站反爬机制绕过终极指南(技术原理 + 实战代码 + 避坑技巧)

在 Python 爬虫的世界里,反爬机制是每一个爬虫开发者都必须面对的挑战。网站为了保护自身数据不被恶意爬取,会设置各种反爬机制,这使得爬虫开发变得更加复杂和有趣。本文将详细介绍常见的网站反爬机制及其绕过方法,结合技术原理、实战代码和避坑技巧,帮助你成为一名优秀的爬虫开发者。

u014481728的博客 1005

Day44——SpringBoot学习笔记part2

SpringBoot学习part2 微服务 微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通. 将一个个微服务想象成一个个的业务,一个模块一个模块的 单体应用架构(all in one)是指,我们将一个应用的中的所有应用服务都封装在一个应用中。无论是ERP、CRM或是其他什么系统,你都把数据库访问,web访问,等等各个功...

u013583756的博客 314

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

Springboot-web篇---part01-webjars

SpringBoot对静态资源的映射规则 1.所有/webjars/**,都去classpath:/META-INF/resources/webjars/找资源; webjars:以jar包的方式引入静态资源; https://www.webjars.org/ 引入静态资源jquary-webjars <dependency> <group...

weixin_43729631的博客 176

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringBoot学习-part21 tymeleaf 了解基本语法与小练习

找到Thymeleaf配置文件 将Html页面放到classpath:/templates/ classpath:/templates/ Thymeleaf按照如下方式寻找资源和拼串儿 在html中取出值 1.页面中导入Thymeleaf名称空间 <html lang="en" xmlns:th="http://www.thymeleaf.org"> 2.利用 th:text 设置div的文本值 thymeleaf 众多属性 Thymeleaf基本表达式 Variable Ex

Ezerbel的博客 250

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Springboot-web篇---part03-登录,拦截

登录 开发期间模板引擎页面修改好以后要实时生效 1.禁用模板引擎的缓存 spring.thymeleaf.cache= false 2.页面修改完ctrl+f9:重新编译 拦截器 public class LoginHandlerInterceptor implements HandlerInterceptor{ @Override public boolean preHandl...

weixin_43729631的博客 194

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot学习-part26 Restful CRUD 员工页面

利用模板引擎抽取引用公共片段 比方说我们有一个页面路径为:/WEB-INF/templates/footer.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <body> <div th:fragment="copy"> &copy; 2011 The Good Thymes Virtual Grocery </div> </body> &l

Ezerbel的博客 193

Spring Boot - part2

文章目录1. 静态资源处理1.1 静态资源映射规则①webjars1.2 静态资源映射规则②1.3 自定义静态资源路径1.4 首页处理2. Thymeleaf2.1 引入Thymeleaf2.2 分析2.3 使用语法 1. 静态资源处理 1.1 静态资源映射规则① SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置类里面。 在WebMvcAutoConfigurationAdapter 中有很多配置方法;其中一个方法: addResource

weixin_48665759的博客 226

SpringBoot财务预算管理系统开发实践

企业财务预算管理是数字化转型中的重要环节,传统Excel方式存在协同效率低、版本混乱等痛点。基于SpringBoot的B/S架构系统通过自动配置、内嵌服务器等特性实现快速部署,结合MyBatis-Plus多数据源支持满足企业级需求。系统采用事件驱动模型实现实时预算预警,通过Git-like版本控制解决多人协作冲突。典型应用场景包括:预算编制自动分配算法、多维度数据穿透分析、与OA系统审批流集成等。该方案特别适合50-200人规模企业,实测可提升60%以上预算编制效率,其中递归分解算法和乐观锁机制是核心技术亮

weixin_33912638的博客 338

SpringBoot在线投稿系统开发与优化实践

在线投稿系统作为学术内容生产的关键基础设施,其技术实现涉及Web开发、数据库设计和权限控制等多个核心领域。基于SpringBoot框架的快速开发能力,配合MySQL关系型数据库的事务特性,可以高效构建稳定可靠的投稿系统。系统采用RBAC权限模型实现作者、审稿人和编辑的多角色隔离,通过状态机模式管理稿件生命周期。在工程实践中,Redis缓存和MySQL索引优化能显著提升系统性能,而文件分片上传机制则解决了大文件处理的难题。这类系统在学术期刊、会议投稿等场景具有广泛应用价值,其技术方案也可扩展至其他内容管理领域

weixin_30455023的博客 386

Springboot基础篇---part01-HelloWorld

Springboot之HelloWorld 实现 :浏览器发送hello请求,服务器接收请求并处理,响应Hello World! 字符串 1.创建一个maven工程(利用idea自身优势jar) 2.导入依赖springboot相关的依赖 -进入springboot官网,Quick Start->搜索并复制->粘贴后自动导入相应依赖 <parent> ...

weixin_43729631的博客 191

基于SpringBoot的毕业设计选题系统:从需求到部署的全栈实战

在高校教学管理与毕业设计流程中,如何高效、公平地协调师生资源、管理选题流程,是一个普遍存在的技术需求。其核心原理在于构建一个基于角色权限的在线协作平台,通过数据库事务与业务逻辑控制,确保流程的规范性与数据的一致性。这类系统的技术价值在于将传统线下、分散的流程数字化与自动化,从而显著提升管理效率、减少人为错误与沟通成本。其典型应用场景包括毕业设计选题、课程设计分组、科研项目申报等需要双向选择与过程管理的领域。本文以毕业设计选题为具体案例,详细阐述了如何利用SpringBoot、MyBatis-Plus与Vue

weixin_30915951的博客 461

SpringBoot2.0Web开发实例(二)Thymeleaf模板引擎

文章来源:https://blog.youkuaiyun.com/gozhuyinglong 版权声明:本文版权归作者所有,转载请注明出处 一、引入Thymeleaf依赖 在pom文件中添加如下内容 &lt;!--引入thymeleaf模板引擎--&gt; ...

人生就是一个不断学习的过程 1635

web开发:Thymeleaf模板引擎

1.1Thymeleaf简介 1.2:模板引擎: 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换,便生成了最终需要的业务数据(如网页)。“置换型”模板引擎实现简单,但其效率低下,无法满足高负载的应用需求(比如有海量访问的网站),因此还出现了“解释型”模板引擎和“编译型”模板引擎等。 1.3:Thym

weixin_47306135的博客 1042

Spring Boot学习笔记:(三)Web开发(Thymeleaf)

Web开发是项目开发中至关重要的一部分,Web开发的核心内容主要包括内嵌Servlet容器和Spring MVC。一、 Spring Boot的Web开发支持在上节中提到的Starter Poms中提到了spring-boot-starter-web,对于Web开发,这个starter pom提供了嵌入的Tomcat以及SpringMVC依赖。关于Web相关的自动配置存储在spring-boot-

noaman_wgs的博客 1187

SpringBoot2--Web模板引擎Thymeleaf

前言 Spring Boot采用jar包的形式,并且是内嵌式的HTTP服务器,不支持JSP,所以要想获得动态页面必须引入模板引擎。常用的模板引擎有FreeMarker、Thymeleaf、jsp、veocity。本文以Thymeleaf为例,了解一下模板引擎的引入 一、引入Thymeleaf 在pom.xml文件中导入即可 <dependency> <groupId>org.springframework.boot</groupId&gt

weixin_43233653的博客 345
上一篇: SpringBoot学习笔记【part11】Web开发——请求参数的注解
下一篇: SpringBoot学习笔记【part13】Thymeleaf抽取公共页面
Parker7
博客等级 码龄7年 18粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值