繁体   English   中英

spring mvc默认映射处理程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM