spring-boot-starter-thymeleaf加载外部html文件

在Spring MVC中,我们可以使用Thymeleaf模板引擎来实现加载外部HTML文件。

1.Thymeleaf介绍

Thymeleaf是一种现代化的服务器端Java模板引擎,用于构建漂亮、可维护且易于测试的动态Web应用程序。它适用于与Spring框架集成,并且可以与Spring MVC或Spring Boot等框架一起使用。

Thymeleaf模板引擎允许开发人员在HTML页面中使用模板表达式,这些表达式可以动态地替换页面中的内容。它提供了丰富的表达式语法,可以从后端Java代码中获取动态数据,并在模板中进行显示。与其他模板引擎相比,Thymeleaf具有以下特点:

  • 自然的模板语法:Thymeleaf的模板语法非常类似于HTML,易于理解和编写。
  • 静态预览:在开发过程中,可以直接在浏览器中预览Thymeleaf模板,无需启动整个应用程序。
  • 强大的功能:Thymeleaf提供了丰富的标签和表达式,可以处理循环、条件判断、国际化等常见的模板需求。
  • 安全:Thymeleaf会对输出的内容进行自动转义,以防止XSS攻击。

2.springboot使用thymeleaf

使用spring-boot-starter-thymeleaf可以非常方便地使用thymeleaf,下面来看详细的例子。

2.1.引入spring-boot-starter-thymeleaf依赖

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

2.2.创建controller

@Controller
public class H5Controller {@GetMapping("/external")public String loadExternalHtml() {return "index";}
}

在上述示例中,index()方法处理根路径的GET请求,并返回"index"字符串。这意味着它将返回名为index.html的Thymeleaf模板。

现在,创建一个名为index.html的Thymeleaf模板,放置在src/main/resources/templates目录下(默认的Thymeleaf模板目录)

如果想重新定义模板目录路径,只需要修改application.properties文件

spring.thymeleaf.prefix=file:/F:/projects/eb/resources/html5/

2.3.创建简易html文件

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Index Page</title>
</head>
<body><h1>This is the index page</h1>
</body>
</html>

2.4.浏览器访问

在浏览器输入localhost:8080/index.html,即可看到html内容。

2.5.参数化访问html文件

假设Thymeleaf目录下有很多文件,我们希望客户端能通过参数来选择加载某个文件,那么我们可以修改controller的代码。

@Controller
public class H5Controller {@GetMapping("/external")public String loadExternalHtml(@RequestParam String resource) {return resource; }}

浏览器重新输入(可以根据需要访问特定文件):

http://localhost:8080/external?resource=hello

2.6热加载文件

web项目有一个特殊要求,就是希望程序在运行器可以动态加载html文件。使用thymeleaf,我们可以自动实现。

在程序运行期间,我们往/templates目录下新增文件,在浏览器输入地址,即可访问新增的文件。

2.7热更新文件

如果已经添加的html文件,需要在程序运行期间修改内容呢?thymeleaf同样也支持。只需修改application.properties文件

spring.thymeleaf.cache=false

 相关代码可以调试AbstractCachingViewResolver类,由图可知,如果spring.thymeleaf.cache设置为true,则默认缓存数量为1024个文件。为false的话,则不缓存,每次都重新创建View,因此,每次加载(不管有没有修改)都是创建新的文件。

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

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

相关文章

每日OJ题_牛客HJ12 字符串反转(IO型OJ)

目录 牛客HJ12 字符串反转 解析代码 牛客HJ12 字符串反转 字符串反转_牛客题霸_牛客网 解析代码 #include <iostream> using namespace std; int main() {string str "";cin >> str;int left 0, right str.size() - 1;while (left < right){ch…

算法简单小技巧

主页&#xff1a;xiaocr_blog 1.最小公倍数和最大公约数 #include<iostream> using namespace std; int main(){int a,b;cin>>a>>b;int r a%b;while (r!0){a b;b r;r a%b;}cout<<b<<endl;return 0 ; } #include<iostream> using nam…

Flink源码解析(1)TM启动

网络传输模型 首先在看之前,回顾一下akka模型: Flink通讯模型—Akka与Actor模型-CSDN博客 注:ActorRef就是actor的引用,封装好了actor 下面是jm和tm在通讯上的概念图: RpcGateway 不理解网关的作用,可以先移步看这里:网关_百度百科 (baidu.com) 用于定义RPC协议,是…

#每天一道面试题# 什么是MySQL的回表查询

MySQL中的索引按照物理存储的方式分为聚集索引和非聚集索引&#xff1b; 聚集索引索引和数据存储在一起&#xff0c;B树的叶子节点就是表数据&#xff0c;如果通过聚集索引查询数据&#xff0c;直接就可以查询出我们想要的数据&#xff1b;非聚集索引B树的叶子节点存储的是主键…

WebSocket 鉴权实践:从入门到精通

WebSocket 作为实时通信的利器&#xff0c;越来越受到开发者的青睐。然而&#xff0c;为了确保通信的安全性和合法性&#xff0c;鉴权成为不可或缺的一环。本文将深入探讨 WebSocket 的鉴权机制&#xff0c;为你呈现一揽子的解决方案&#xff0c;确保你的 WebSocket 通信得心应…

【C语言】【牛客】BC161 大吉大利,今晚吃鸡

文章目录 题目思路代码呈现 题目 链接: link 思路 这道题的本质其实不是考察C语言的运用&#xff0c;而是来考察我们对通项公式的总结。 我们可以看一下下面这道汉诺塔问题 相传在古印度圣庙中&#xff0c;有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上&…

【全网最详细】ComfyUI下,Insightface安装指南-聚梦小课堂

&#x1f96e;背景 ComfyUI下使用IP-adapter下的faceID模型的时候&#xff0c;大家可能会遇到如下错误&#xff1a; Error occurred when executing InsightFaceLoader: No module named insightface File "F:\ComfyUI-aki\execution.py", line 151, in recursive_…

VUE3 自定义指令

概念 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 指令钩子 一个指令的定义对象可以提供几种钩子函数 (都是可选的)&#xff1a;示…

MySQL调优之SQL语句

1 慢 SQL 语句的几种常见诱因 1.1 无索引、索引失效导致慢查询 如果在一张几千万数据的表中以一个没有索引的列作为查询条件&#xff0c;大部分情况下查询会非常耗时&#xff0c;这种查询毫无疑问是一个慢 SQL 查询。所以对于大数据量的查询&#xff0c;我们需要建立适合的索…

凝思操作系统离线安装mysql和node

PS&#xff1a;下面这就是国产凝思的界面,测试版本是V6.0.80&#xff0c;第一次听说这种系统&#xff0c;于是去官网下载部署包&#xff0c;下面是地址 注意:这个系统如果没有激活&#xff0c;ip都不会有&#xff0c;这样文件都不能传到服务器&#xff0c;xshell这些工具都连不…

自托管状态页面工具Kener

什么是 Kener &#xff1f; Kener 是开源的 Node.js 状态页面工具&#xff0c;旨在轻松监控服务和处理事故。它提供了一个时尚且用户友好的界面&#xff0c;简化了对服务中断的跟踪&#xff0c;并改善了我们在事故期间的沟通方式。而最好的部分是&#xff0c;Kener 与 GitHub 无…

hosts文件丢失了怎么办?

hosts文件的位置&#xff1a;C:\Windows\System32\drivers\etc 丢失了恢复的方法&#xff1a; 在“管理员&#xff1a;命令提示符中输入&#xff1a; &#xff08;winR 然后cmd&#xff09; for /f %P in (dir %windir%\WinSxS\hosts /b /s) do copy %P %windir%\System32\d…

天题赛座位分配(pta团体天梯题c++简易版)

天梯赛每年有大量参赛队员&#xff0c;要保证同一所学校的所有队员都不能相邻&#xff0c;分配座位就成为一件比较麻烦的事情。为此我们制定如下策略&#xff1a;假设某赛场有 N 所学校参赛&#xff0c;第 i 所学校有 M[i] 支队伍&#xff0c;每队 10 位参赛选手。令每校选手排…

超实用!免费软件站大盘点,总有一款适合你

相信用Mac电脑的同学都知道一个网站MacWK&#xff0c;可以白嫖几乎所有常用软件&#xff0c;不用付费&#xff0c;但不好的消息是在2022年10月宣布关站&#xff0c;小编从此走上了开源免费的道路&#xff0c;尽管不太好用&#xff0c;奈何口袋木有钱&#xff0c;经过小编的不断…

找出字符串中第一个匹配项的下标-力扣

纯自己手写 int strStr(char* haystack, char* needle) {int haylenstrlen(haystack);int nelenstrlen(needle);if(strlen(haystack)<strlen(needle)) return -1;int slow0;//用于标记从haystack哪个字符开始比较int fast0;//用于标记haystack中正在进行比较的字符int ne…

力扣日记3.18-【贪心算法篇】122. 买卖股票的最佳时机 II

力扣日记&#xff1a;【贪心算法篇】122. 买卖股票的最佳时机 II 日期&#xff1a;2024.3.18 参考&#xff1a;代码随想录、力扣 122. 买卖股票的最佳时机 II 题目描述 难度&#xff1a;中等 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。…

AI大模型额外学习一:斯坦福AI西部世界小镇笔记(包括部署和源码分析)

文章目录 一、简单介绍1&#xff09;项目代码介绍2&#xff09;重新播放模拟3&#xff09;适当修改分叉模拟 二、部署斯坦福小镇Demo1&#xff09;准备工作2&#xff09;解决遇到的bug3&#xff09;启动服务器和前端 三、源码剖析1&#xff09;主题顺序 github链接 一、简单介…

08|记忆:通过Memory记住客户上次买花时的对话细节

无论是LLM还是代理都是无状态的&#xff0c;每次模型的调用都是独立于其他交互的。也就是说&#xff0c;我们每次通过API开始和大语言模型展开一次新的对话&#xff0c;它都不知道你其实昨天或者前天曾经和它聊过天了。 使用ConversationChain from langchain import OpenAI…

1.gradle编译和运行

1.在Windows 项目的根目录下使用.\gradlew.bat build命令进行编译。 如果出错的原因是连接超时&#xff1a; Exception in thread “main” java.io.IOException: Downloading from https://services.gradle.org/distributions/gradle-8.6-bin.zip failed: timeout (10000ms) a…

【华为OD机试】找座位【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一个大型体育场内举办了一场大型活动,由于疫情防控的需要, 要求每位观众的必须间隔至少一个空位才允许落座。 现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出, 在不移…