web.xml错误页面不显示图像

时间:2012-08-25 15:32:39

标签: web.xml custom-error-pages

我有一个error.html页面,我希望在用户遇到Error404时重定向到该页面。以下是有效的:

<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
</error-page>

但是,我的error404.jsp文件包含一个在重定向用户时不会显示的图像。如果我只输入URL,则会显示包含图像的完整页面。但是,如果用户尝试执行报告错误404的操作,则会显示error404.jsp文件而不显示图像。

我也尝试过使用error404.html,但我遇到了同样的问题......

你知道为什么会这样吗?

非常感谢 艾娜

1 个答案:

答案 0 :(得分:3)

呈现错误页面时,其内容将在HTTP响应中返回,而不进行重定向。这意味着浏览器仍然可以看到&#39;它在有错误的请求的URL的上下文中。因此,任何相对资源链接(图像,CSS等)都将相对于当前页面的URL。

因此,如果您有以下设置:

    图片文件夹中的
  • image1.gif
  • error404.jsp将图片引用为"../images/image1.gif"

您会发现键入http://yourserver.com/YourContextRoot/error404.jsp的工作正常,但是当您使用http://yourserver.com/YourContextRoot/path1/path2/missingPage时,它会尝试在错误的路径中查找图像(即在/YourContextRoot/path1/images/image1.gif下)。

解决方案是使用JSP EL或scriptlet创建一个与服务器相关的链接(即以&#39; /&#39;开头),包括context-root:

<img src="${pageContext.request.contextPath}/images/image1.gif" />

我希望有效!