我有一个 error.html 页面,当用户遇到 Error404 时,我想重定向到该页面。以下内容正在运行:
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
但是,我的 error404.jsp 文件包含一个图像,当用户重定向时该图像不会显示。如果我只输入 URL,则会显示带有图像的完整页面。但是,如果用户尝试执行报告错误 404 的操作,则将显示 error404.jsp 文件,而不会显示图像。
我也尝试过使用 error404.html 但我遇到了同样的问题...
您知道为什么会发生这种情况吗?
非常感谢 埃娜
最佳答案
呈现错误页面时,其内容将在 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" />
我希望这能起作用!
关于web.xml错误页面不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12123294/