首页 > Java > 正文

如何使用 Thymeleaf 将图像添加到 html 页面?

PHPz
发布: 2024-02-09 17:30:12
转载
1662人浏览过

php小编西瓜在这篇文章中将向大家介绍如何使用thymeleaf将图像添加到html页面。thymeleaf是一个流行的服务器端java模板引擎,它允许我们在html页面中使用动态数据。添加图像是网页设计中常见的需求,thymeleaf提供了简单而强大的功能来实现这一目标。在接下来的内容中,我们将学习如何使用thymeleaf标签和表达式来引用和显示图像。无论你是初学者还是有经验的开发者,本文都将为你提供有用的指导,让你轻松地将图像添加到html页面中。

问题内容

我的问题是我的 thymeleaf 块在 html 页面上不显示图像和快捷方式图标

我尝试使用文件路径:

<img class="logo" th:src="@{src/main/resources/static/logo.png}" alt="logo">
登录后复制

并且还尝试使用rest api:

<img class="logo" th:src="@{/api/v1/logo}" alt="logo">
登录后复制

有控制器:

立即学习前端免费学习笔记(深入)”;

@RestController
@RequestMapping("/api/v1/logo")
public class LogoController {

    @GetMapping(produces = MediaType.IMAGE_JPEG_VALUE)
    public Resource getLogo() throws IOException {
        return new ByteArrayResource(Files.toByteArray(new File("src/main/resources/static/logo.png")));
    }
}
登录后复制

而且我总是得到 alt 而不是图像...

解决方法

问题1:正确读取文件

如果您使用默认配置,则您放入 src/main/resources 的任何内容都会复制到类路径中。因此,您不应在代码中引用 src/main/resources,而应引用类路径本身。

如果您在本地运行,它可能仍然可以工作,但是一旦您在其他地方运行 jar 文件,它就会完全崩溃。

所以理想情况下,您应该将控制器重写为:

// get location from classpath
uri location = getclass().getclassloader().getresource("static/logo.png").touri();
// get file
path file = paths.get(location);
// read bytes
return new bytearrayresource(files.readallbytes(file));
登录后复制

由于从文件中检索资源是一项常见任务,因此您实际上不必读取字节。 您可以使用 filesystemresource 代替 bytearrayresource:

// get location from classpath
uri location = getclass().getclassloader().getresource("static/logo.png").touri();
// get file
path file = paths.get(location);
return new filesystemresource(file);
登录后复制

您甚至可以缩短这个时间,因为从类路径检索资源非常常见,因此有一个 classpathresource 类:

return new classpathresource("static/logo.png");
登录后复制

这还不是全部,通常情况下,您需要从类路径提供 web 资源,因此在 spring boot 中, classpath:static/ 文件夹或 classpath:public/ 文件夹中的所有内容都已经在网络。所以通常情况下,您的图像已经可以在 http://localhost:8080/logo.png 上使用,而不需要您的控制器方法。

所以通常您可以完全删除该控制器方法。

问题2:正确引用文件

这给我们带来了第二个问题。目前,您使用 @{/api/v1/logo} 或 @{src/main/resources/static/logo.png} 引用您的图像。 thymeleaf 将 @{path/to/file} 解释为上下文相关 url,因此它唯一做的就是在上下文路径前面添加上下文路径(如果有的话)并期望该文件在 http://localhost:[serverport ]/[contextpath]/path/to/file。

但正如我们之前所确定的,您的图像应该可以在 http://localhost:8080/logo.png 上找到,因此,您应该使用 @{/logo.png}:

<img class="logo" th:src="@{/logo.png}" alt="Logo">
登录后复制

如果这不起作用,那么:

  • 您可能错误配置了构建工具,未在类路径中包含 src/main/resources。
  • 您可能已将 spring boot 配置为不自动提供 classpath:static/ 或 classpath:public/ 内的任何内容。

以上就是如何使用 Thymeleaf 将图像添加到 html 页面?的详细内容,更多请关注php中文网其它相关文章!

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号