我正在使用 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>
当您的应用程序返回 404 状态代码时,该请求将被拦截并在内部转发到端点 /error/404
- 它可以是您的 spring 应用程序中的任何端点,因此可以执行任何操作您会在普通 Controller 中使用的动态内容。
要以编程方式执行此操作,无需 Spring Boot,您可以创建一个 Filter 类来包装所有请求并仅捕获异常并检查非 2XX 响应代码并适本地转发/处理 - 这基本上是 Spring Boot 人员实现的解决方案(参见 ErrorPageFilter 类)。
要访问有关异常的信息,可以从请求中访问 - 请参阅此处的类似答案:https://stackoverflow.com/a/1034667/258813
关于spring - 如何在自定义 Tomcat 404 页面上填充动态信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29713632/