使用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