码迷,mamicode.com
首页 > 编程语言 > 详细

关于SpringMVC中两种映射器不能共存的解决

时间:2018-05-21 14:40:37      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:let   失败   ann   访问   update   xml配置   prope   strong   一个   

首先大家都知道SpringMVC有两种映射器:

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

并且第一种“名字url映射器”是默认使用的。

两种映射器是可以共存的

但是今天搭建项目的时候发现两种映射器都启用的时候,BeanNameUrlHandlerMapping却失效了,这是为什么呢?

下面是我的xml配置:

    <bean id="hello" name="/hello.action" class="servlet.Hello"></bean>
    
    <bean id ="yaha" class="servlet.Yaha"></bean>
    
    <bean id="update" class="servlet.Update"></bean>

    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/update.action">update</prop>
                <prop key="/yaha.action">yaha</prop>
            </props>        
        </property>
    </bean>

运行结果

访问update.action————正常

访问yaha.action————正常

访问hello.action————404

 

可以明显看出是“名字url”映射器匹配失败了。

 

分析

失效的刚好就是默认的那一个,而平时我们使用默认映射器的时候是经常不会去写这个映射器的<bean>的声明,而今天声明一个映射器,那么所有的映射可能是将全部交给声明的那一个。所以默认的映射器不再调用。

 

测试

在xml中加入下面的声明:

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

访问update.action————正常

访问yaha.action————正常

访问hello.action————正常

 

结论

当需要两种映射器同时使用的时候,一定不要忘了将默认的 BeanNameUrlHandlerMapping 也声明出来。(即使只使用默认也最好声明出来)

 

关于SpringMVC中两种映射器不能共存的解决

标签:let   失败   ann   访问   update   xml配置   prope   strong   一个   

原文地址:https://www.cnblogs.com/Xieyang-blog/p/9066597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!