使用Spring Web MVC自定义处理405错误

在我的应用程序中,我有一些仅允许POST的RequestMappings。如果有人碰巧在该特定路径上触发GET请求,他们将得到一个由容器(Tomcat)提供的405错误页面。我可以在web.xml中创建和定义405错误页面以进行自定义。

我想要的是:任何会导致405错误的请求都应在特定的控制器方法中处理。

我尝试过的

  • 与上述每个映射对应的方法为“ method = GET”。这可以正常工作,但需要我为仅允许POST的每个路径创建一个实际的requestmapping和方法。我发现这种不必要的重复和混乱。
  • 全局的’catch’方法(requestmapping / *):这不起作用,因为Spring将GET方法错误地调用到仅用POST指定的路径
  • 一个带有ExceptionHandler注释的方法来处理HttpRequestMethodNotSupportedException类的异常:此方法不起作用。看来Spring完全在其框架代码中引发并捕获了此异常。
  • 在web.xml中指定我自己的405。这不是完美的,因为我想拥有定制的处理方式,而不是静态错误页面。

回答:

我建议使用处理程序异常解析器。您可以使用spring的DefaultHandlerExceptionResolver。覆盖handleHttpRequestMethodNotSupported()方法并返回您的自定义view。这将适用于所有应用程序。

效果接近您在选项3中所期望的效果。带@ExceptionHandler注释的方法永远不会捕获异常的原因是因为找到成功的Spring控制器处理程序映射后,将调用这些ExceptionHandler带注释的方法。但是,在此之前会引发您的例外情况。

以上是 使用Spring Web MVC自定义处理405错误 的全部内容, 来源链接: utcz.com/qa/417006.html

回到顶部