2

例如,我有一个 error.html 页面,当用户遇到 Error404 时,我想将其重定向到该页面。以下工作:

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

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

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

你知道为什么会这样吗?

非常感谢埃纳

4

1 回答 1

3

呈现错误页面时,其内容会在 HTTP 响应中返回,而无需重定向。这意味着浏览器仍然会在出现错误的请求的 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 创建相对于服务器的链接(即以“/”开头),方法是包含上下文根:

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

我希望这行得通!

于 2013-03-15T16:47:59.170 回答