![](/img/trans.png)
[英]Why Spring(4) mvc:default-servlet-handler overrides controller mapping?
[英]spring mvc default mapping handler
基本上,使用Spring MVC,我正在尝试创建一个路由器控制器,它将接收尚未由另一个控制器处理的任何URL并将其路由到其各自的资源,或者如果找不到资源则转发搜索请求。 使用@RequestMapping(value="/{qry}", method = RequestMethod.GET)
成功获取了我的其他控制器尚未抓取的请求(这似乎通过首先检查最具体的映射来工作)然后我可以做任何我需要的转发。 但是,只要我在请求中放入“/”,映射就会中断并返回404。
所以换句话说, "/some-long-path-or-something"
正确地映射到这个全能控制器,但是"/some/other/path"
(它没有映射到任何其他控制器)没有被我抓住包罗万象。
如何实施? 我已经阅读了一些关于拦截器和默认处理程序的内容,但没有找到解决方案的运气。
谢谢你的任何建议!
开箱即用,Spring自动注册一个DefaultAnnotationHandlerMapping
bean,它使用注释匹配对控制器的请求。 在大多数情况下,它的默认行为都很好。
如果在上下文中声明自己的DefaultAnnotationHandlerMapping
,那么它将覆盖默认值,并允许您设置其defaultHandler
属性,该属性将在没有任何显式处理程序匹配时使用。 只需将“catch-all”控制器注入该属性,然后将Bob's Your Uncle注入其中。
为什么不抓住404并相应处理? 如果我没有弄错的话,我认为这就是你想要完成的事情。
您可以将它放在web.xml中来处理404:
<error-page>
<error-code>404</error-code>
<location>/yourHandlerPage</location>
</error-page>
我在这里错过了什么吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.