如何在自定义 Tomcat 404 页面上填充动态信息?

How can I populate dynamic information on a custom Tomcat 404 page?

我正在使用 Tomcat + Spring 组合一个 Web 应用程序,我想要包含动态内容的自定义 404 页面,而不仅仅是静态内容 html文件。例如,如果我在博客网站上工作,我可能想在 404 页面上显示 5 个最新帖子的列表,以将用户引导至实际内容。

另外,有什么方法可以在生成错误页面时利用错误信息吗?例如,如果错误涉及我的应用程序中发生的异常,而不是错误 url,我可以显示堆栈跟踪吗?

您是从头开始创建项目吗?您可以使用 Spring-Boot 吗? Spring Boot 提供了许多开箱即用的不错的错误处理功能,可以轻松修改。

无论哪种方式,如果您只想在 web.xml 中使用标准错误页面映射,或者示例:

<error-page>
    <error-code>404</error-code>
    <location>/error/404</location>
</error-page>

当您的应用程序 returns 出现 404 状态代码时,请求将被拦截并在内部转发到端点 /error/404 - 它可以是您的 spring 应用程序中的任何端点,所以可以做任何你在普通控制器中会做的动态事情。

要在没有 Spring 引导的情况下以编程方式执行此操作,您可以创建一个过滤器 class 来包装所有请求并仅捕获异常并检查非 2XX 响应代码和 forwards/handles 适当- 这基本上是 Spring 引导人员实施的解决方案(参见 ErrorPageFilter class)。

要访问有关异常的信息,可以从请求中访问 - 请在此处查看类似的答案: