【问题标题】:How to make my application look for resources starting on the application base and not the domain?如何让我的应用程序从应用程序库而不是域开始寻找资源?
【发布时间】:2014-08-23 22:57:31
【问题描述】:

我们有一个使用 Spring MVC 和 Thymeleaf 的 Java Web 应用程序。 我们一直通过这样的 URL 使用这个应用程序:“company.myApp.com”,它在这种情况下表现良好。 我们现在有一个潜在客户希望拥有自己的服务器,其 url 像这样 www.customer.com/myApp

由此而来的问题是,在开头使用“/”引用的任何资源(图像、JS、CSS 等)都将找不到。 示例

<img src="/images/logo.png" alt="logo" />

使用我们之前的设置,因为浏览器会在它所在的 comany.myApp.com/images/logo.png 上查找它。

如果在第二种情况下使用相同的代码,则无法找到该图像,因为浏览器会在 www.customer.com/images/logo.png 和 www.customer.com/ 上查找该图像myApp/images/logo.png

有什么方法可以让路径始终相对于“应用程序库”而不是域?

我可以有一个设置条目作为应用程序基础,我可以在创建视图时将其连接起来,但是在 CSS 上设置图像引用时我可以做什么?

ps:我知道这听起来很疯狂,我怀疑是否有办法这样做,因为浏览器不知道如何知道 /myApp 是否是应用程序基础,但这个问题让我想到了这种情况并不罕见(可以在用户想要的任何路径中使用的应用程序),因此可能有一种方法可以实现它。

【问题讨论】:

标签: java html


【解决方案1】:

是的,管理起来有点烦人。这就是我一直这样做的方式:

1) 在您的 CSS 中引用了图片网址,请使用相对路径。 IE,如果您的图像在 src/main/webapp/img 中,而您的 css 在 src/main/webapp/css 中,您可以使用 url('../img/image.png') 引用 css 中的图像

2) 您所说的应用程序路径称为上下文路径。你可以从请求中得到这个。因此,为了根据您的上下文路径抓取图像(或其他资源),您可以这样做:

<img src="${request.contextPath}/img/image.png" />

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    相关资源
    最近更新 更多