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

标签 spring spring-mvc tomcat http-status-code-404

我正在使用 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/

相关文章:

java - Spring security - 具有多个身份验证提供者的记住我身份验证

java - 如何在 Spring 中创建数据更改表单

apache - 是否可以对 mod_proxy 进行动态配置以将 Apache httpd 连接到 Tomcat?

Tomcat7 .war 项目未部署

java - 在基于 Spring 的 Web 应用程序中处理 session 过期事件

java - 在自定义 validator Spring Hibernate 中注入(inject) @PersistenceContext

java - Spring Batch 如何以 Reader 身份读取多个表(查询)并将其写入平面文件写入

java - 分发这个框架的最佳方式

jsp - 使用SpringMVC +嵌入式Jetty + Gradle设置JSP

java - Web 服务器无法启动。 8080端口已被使用