【问题标题】:How can I populate dynamic information on a custom Tomcat 404 page?如何在自定义 Tomcat 404 页面上填充动态信息?
【发布时间】:2015-06-25 03:45:31
【问题描述】:
我正在使用 Tomcat + Spring 组合一个 Web 应用程序,并且我希望拥有包含动态内容的自定义 404 页面,而不仅仅是一个静态 html 文件。例如,如果我在一个博客网站上工作,我可能希望在 404 页面上显示 5 个最新帖子的列表,以将用户引导至实际内容。
此外,有没有办法在生成错误页面时利用错误信息?例如,如果错误涉及我的应用程序中发生的异常,而不是错误的 url,我可以显示堆栈跟踪吗?
【问题讨论】:
标签:
spring
spring-mvc
tomcat
http-status-code-404
【解决方案1】:
您是从头开始创建项目吗?您可以使用Spring-Boot吗? Spring Boot 提供了很多很好的开箱即用的错误处理功能,可以轻松修改。
无论哪种方式,如果你只是想在 web.xml 中使用标准错误页面映射,或者示例:
<error-page>
<error-code>404</error-code>
<location>/error/404</location>
</error-page>
当您的应用程序返回 404 状态码时,请求将被拦截并在内部转发到端点 /error/404 - 它可以是您的 Spring 应用程序中的任何端点,因此可以执行您在正常情况下执行的任何动态操作控制器。
要以编程方式执行此操作,无需 Spring Boot,您可以创建一个过滤器类来包装所有请求并捕获异常并检查非 2XX 响应代码并适当地转发/处理 - 这基本上是 Spring Boot 人员实施的解决方案(参见ErrorPageFilter 类)。
要访问有关异常的信息,可以从请求中访问 - 请参阅此处以获取类似答案:https://stackoverflow.com/a/1034667/258813