我使用这个链接开发了一个项目:https://spring.io/guides/gs/serving-web-content/我用maven开发了上面的项目。
我在这个. abc.html和xyz.html下有两个html文件。为了在html页面中插入图像,我使用了这样的URL:
<img src="https://example.com/pic_mountain.jpg" alt="Mountain View" style="width:304px;height:228px">
但我想使用一个图像文件位于我的服务器,而不是.我试图将文件放在同一目录的html文件,但它不工作.我甚至试图给完整的路径,但没有用.这是一个ubuntu操作系统.请帮助我在这里.有没有任何地方,我可以配置基本路径或基本上如何把我的本地文件夹中的图像.
8条答案
按热度按时间f87krz0w1#
我想让你看看Thymeleaf的Standard URL Syntax文档,特别是上下文相关和服务器相关的URL模式。
上下文相关URL:
如果你想在你的webapp中链接资源,那么你应该使用context relative url。这些URL应该是相对于web应用程序安装在服务器上后的根目录。例如,如果我们将myapp.war文件部署到Tomcat服务器,我们的应用程序可能会以http://localhost:8080/myapp的形式访问,myapp将是上下文名称。
作为JB Nizet,以下内容将为您工作,因为我在一个webapp项目中亲自使用了thymeleaf,
test.png应该在webapp文件夹中的项目根目录下。
当你在浏览器中点击
http://localhost:8080/myapp/resources/images/Picture.png
时,你应该能够访问上面的语法的图像。你的资源文件夹可能在你的应用程序的webapp文件夹下。服务器相对URL:
相对于服务器的URL与相对于上下文的URL非常相似,不同之处在于它们不假定您希望URL链接到应用程序上下文中的资源,因此允许您链接到同一服务器中的不同上下文
输出为:
如果服务器中存在名为
billing-app
的应用程序,则将从与您的上下文不同的应用程序加载上面的图像。nx7onnlm2#
你需要了解HTTP是如何工作的。当浏览器在URL加载一个页面
HTML页面包含
浏览器将向服务器发送第二个HTTP请求以加载图像。由于路径是相对的,因此图像的URL将是
http://some.host/myWebApp/foo/images/test.png
。请注意,绝对路径由页面的当前“目录”组成,并与图像的相对路径连接。服务器端JSP或thymeleaf模板的路径在这里完全无关。重要的是页面的URL,在典型的Spring MVC应用程序中,此URL是发送初始请求的控制器的URL。如果图像的路径是绝对路径:
然后浏览器将向URL
http://some.host/myWebApp/images/test.png
发送第二个请求。浏览器从Web服务器的根目录开始,并连接绝对路径。为了能够引用图像,无论页面的URL是什么,绝对路径都是首选且更易于使用。
在上面的示例中,
/myWebApp
是应用程序的上下文路径,您通常不希望在路径中硬编码,因为它可能会更改。值得庆幸的是,根据thymeleaf documentation,thymeleaf理解这一点并提供上下文相关路径的语法,从而将/images/test.png
等路径转换为/myWebApp/images/test.png
。因此,您的图像应该如下所示(我从来没有使用过thymeleaf,但这是我从文档中推断出来的)。
因此,
test.png
图像应该位于webapp根目录下的images
文件夹中。k97glaaz3#
在Internet上获取链接:
HTML:
<img th:src="@{${src}}"/>
nr7wwzry4#
我用过贝罗就像..
我的形象路径就像贝娄。
我已经使用了下载图像的代码
对我来说很好。
xe55xuns5#
最近我遇到了类似的问题,但在我的情况下,Spring Security 是一个问题。正如在其他答案和文档中提到的:
应该足够了。但是由于Spring Security 已经添加到我的项目中,我不得不使用所有**/img/****来获取Requests并添加addResourceHandlers。代码如下:
我希望这对将来的某人有帮助
5kgi1eie6#
动态检索链接的用户使用此模式
如果你像这样使用
(${theUser.avatar})
,它将添加?在上面版本链接看起来像这样:/resources/images/avatars/photoname.png4c8rllxm7#
正如DimaSan在这里所说的https://stackoverflow.com/a/40914668/12312156你应该像这样设置图像src:
mo49yndu8#
如果你使用Intellij Idea,那么你应该这样做:
路径中不需要static。应使用@{/images/logo.png},因为在您的情况下,默认解析程序会将/src/main/resources/static/Map到/ url。
我用这个解决了这个问题。我找到解决方案https://copyprogramming.com/howto/image-does-not-show-using-thymeleaf-and-spring的网站