无法在Web应用程序中加载静态内容(Images / JS)

时间:2011-12-14 17:37:05

标签: html jsp java-ee tomcat

我正在开发一个应用程序,我需要引用我的应用程序图像和js等其他东西。 现在在我的JSP文件中,当我尝试使用此路径加载图像时

<img src="static/media/images/logo.gif" alt="welcome" />

我在浏览器中看到以下错误:unable to load the image

我甚至试图引用绝对路径

<img src="/static/media/images/logo.gif" alt="welcome" />

但仍然没有运气。最后,当我添加我的项目名称时,它开始工作。例如,如果我的网络应用程序名称为abc我使用了以下内容

<img src="/abc/static/media/images/logo.gif" alt="welcome to donateblood.com" />

但我确定不是引用图像的正确方法,因为这意味着网络应用程序名称的更改将导致我更改图像的每个URL,这根本不可行。 在css文件中提到的图像工作得很好。 任何人都可以指导我参考图像的正确方法。

其他信息: 我使用eclipse作为我的IDE,使用Tomcat作为容器,它是一个Java EE标准的web应用程序

1 个答案:

答案 0 :(得分:2)

static/media/images/logo.gif

是相对路径。如果您在页面http://localhost/myWebApp/foo/bar.html上,它将解析为

http://localhost/myWebApp/foo/static/media/images/logo.gif

/static/media/images/logo.gif

是Web服务器绝对的路径。无论您是什么,它都会解析为

http://localhost/static/media/images/logo.gif

因此,您需要将Web应用程序的上下文路径添加到绝对路径。使用

<img src="${pageContext.request.contextPath}/static/media/images/logo.gif" alt="welcome" />

<img src="<c:url value='/static/media/images/logo.gif'/>" alt="welcome" />

您应该对webapp中的所有网址执行操作。