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

标签 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 但我遇到了同样的问题...

您知道为什么会发生这种情况吗?

非常感谢 埃娜

最佳答案

呈现错误页面时,其内容将在 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/

相关文章:

java - 如何将我的 foo.war 的根路径设置为/foo/bar 而不是/foo?

Nuxt.js 静态站点和 404 页面

asp.net-mvc - ASP.NET MVC 5自定义错误页面

error-handling - Yii2,模块错误页面不显示,但在错误 404 时显示空白页面

java - 从 html 表单调用 servlet,无需 web.xml 部署描述符

web-applications - 使用 web.xml 中的属性

c# - 自定义错误页面内容显示不正确

cakephp - Cakephp所有错误的自定义错误页面

java - Spring Framework 4.0.3 BeanDefinitionStoreException 从 ServletContext 资源解析 XML 文档的意外异常

java - 链接(href)与 Spring MVC 中的应用程序无关?