【问题标题】:Spring MVC: custom error page for 404s without web.xml fileSpring MVC:没有 web.xml 文件的 404s 的自定义错误页面
【发布时间】:2015-11-10 14:51:58
【问题描述】:

我有一个非常大的项目,其中包含许多不同的控制器。我确实有一个主控制器,它具有程序启动的所有映射,例如(/login、/resetPassword、/logout 等)。我在项目中也没有 web.xml 文件。我需要为所有未映射的请求添加自定义错误页面。我试过创建自己的异常类但没有用。我发现的大多数解决方案都是在 web.xml 中添加错误位置。我宁愿不必创建一个,但如果有人有任何提示或可以将我推向正确的方向,那将有很大帮助。我已经被这个问题困扰了几天了。谢谢。

【问题讨论】:

  • 您可以查看这篇文章,看看它是否适合您:[在此处输入链接描述][1] [1]:stackoverflow.com/questions/24498662/…
  • 谢谢我试过这个解决方案,但没有运气。不过谢谢!底部的回复帮了大忙。

标签: java spring spring-mvc error-handling http-status-code-404


【解决方案1】:

您应该使用映射到web.xml 中的错误页面的404。因为它甚至会处理未映射到您的DispatcherServlet 的 url 请求。例如,假设您的 Spring DispatcherServlet 映射到任何以 .htm 结尾的 url,现在一些错误输入并尝试访问 something/somethingelse.do 您的应用程序服务器现在将向用户显示其自己的默认错误页面,这可能不愉快.

您应该考虑从 MVC 控制器提供自定义错误页面的唯一时间是当您有特定的内容要向用户显示时。具体如,如果在此特定控制器中遇到异常,我想显示特定消息,或将用户重定向到特定页面。在这些情况下,您可以在 Spring 控制器中使用 @ExceptionHandler 方法。

有关更多信息,请查看此博客文章,或参考 MVC 文档:https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

【讨论】:

  • 感谢这帮了大忙!
  • @jergamb 谢谢。乐意效劳。如果您认为该答案令人满意,请接受。
【解决方案2】:

看到这个答案:How to make a filter to detect if the user requested a page that is not found?

  1. 制作过滤器
  2. 使用 HttpServletResponseWrapper 并覆盖 sendError() 和 setStatus()
  3. 通过chain.doFilter(req, wrapper)传递包装好的响应
  4. 如果您在包装器中收到 sendError(),请查看它是否为 404。
  5. 采取适当的应对措施。

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 2011-11-08
    • 2016-01-17
    • 2011-12-27
    • 1970-01-01
    • 2017-01-19
    • 2014-01-30
    • 2014-11-09
    相关资源
    最近更新 更多