Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC:没有web.xml文件的404自定义错误页_Java_Spring_Spring Mvc_Error Handling_Http Status Code 404 - Fatal编程技术网

Java SpringMVC:没有web.xml文件的404自定义错误页

Java SpringMVC:没有web.xml文件的404自定义错误页,java,spring,spring-mvc,error-handling,http-status-code-404,Java,Spring,Spring Mvc,Error Handling,Http Status Code 404,我有一个很大的项目,有很多不同的控制器。我有一个主控制器,它具有程序启动时的所有映射,如(/login、/resetPassword、/logout等)。我在项目中也没有web.xml文件。我需要为所有未映射的请求添加自定义错误页。我尝试创建自己的异常类,但没有成功。我找到的大多数解决方案是将错误位置添加到web.xml。我宁愿不去创造一个,但如果有人有任何建议或可以推动我在正确的方向,将帮助这么多。我已经在这个问题上纠缠了好几天了。谢谢 您应该使用404映射到web.xml中的错误页面。因为它

我有一个很大的项目,有很多不同的控制器。我有一个主控制器,它具有程序启动时的所有映射,如(/login、/resetPassword、/logout等)。我在项目中也没有web.xml文件。我需要为所有未映射的请求添加自定义错误页。我尝试创建自己的异常类,但没有成功。我找到的大多数解决方案是将错误位置添加到web.xml。我宁愿不去创造一个,但如果有人有任何建议或可以推动我在正确的方向,将帮助这么多。我已经在这个问题上纠缠了好几天了。谢谢

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

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

有关更多信息,请参阅本博文或参考MVC文档:

请参阅以下答案:

  • 做一个过滤器
  • 使用HttpServletResponseWrapper并重写sendError()和setStatus()
  • 通过chain.doFilter(req,wrapper)传递包装的响应
  • 如果在包装器中得到一个sendError(),请查看它是否为404
  • 采取适当的应对措施

  • 你可以查看这篇文章,看看它是否适合你:[在这里输入链接描述][1][1]:谢谢,我尝试过这个解决方案,但运气不好。谢谢你!底部的回复帮了大忙。谢谢这帮了大忙@杰甘,谢谢。很乐意帮忙。如果你认为答案令人满意,请接受。