我有一个非常大的项目,有很多不同的控制器。我有一个主控制器,它具有启动程序的所有映射,如(/ login,/ resetPassword,/ logout等)。我在项目中也没有web.xml文件。我需要为所有未映射的请求添加自定义错误页面。我已经尝试创建自己的异常类并且没有工作。我发现的大多数解决方案都是将错误位置添加到web.xml。我宁愿不必创建一个,但如果有人有任何提示或可以推动我朝着正确的方向,这将有助于这么多。我现在已经坚持这个问题几天了。谢谢。
答案 0 :(得分:0)
您应该使用404
映射到web.xml
中的错误页面。因为它甚至会处理未映射到DispatcherServlet
的网址请求。例如,假设你的Spring DispatcherServlet
被映射到以.htm
结尾的任何url,现在一些错误并尝试访问something/somethingelse.do
你的应用服务器现在会向用户显示它自己的默认错误页面,这可能不太愉快。
您应该考虑从MVC控制器提供自定义错误页面的唯一时间是您有特定的东西来向用户显示。具体如下,如果在此特定控制器中遇到异常,我想显示特定消息,或将用户重定向到特定页面。在这些情况下,您可以在Spring控制器中使用@ExceptionHandler
方法。
有关更多信息,请查看此博文,或参阅MVC文档:https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
答案 1 :(得分:0)
请参阅此答案:How to make a filter to detect if the user requested a page that is not found?
- 制作过滤器
- 使用HttpServletResponseWrapper并覆盖sendError()和setStatus()
- 通过chain.doFilter(req,wrapper)传递包装的响应
- 如果您在包装器中收到sendError(),请查看它是否为404。
- 采取适当的回应。
醇>