Spring 3.0 URL映射问题

时间:2011-03-21 20:16:07

标签: tomcat spring-mvc url-mapping

我正在测试Tomcat上从Spring 2.0到Spring 3.0.5的升级,并且遇到一个问题,即对于具有尾部斜杠的URL与不带斜杠的相同URL的URL存在不同的映射行为。

例如,在我的Spring 2.0实现中,根据下面的Spring MVC XML配置,以下URL都将映射到同一个控制器类:

  • /search/categories
  • /search/categories/

<bean id="searchMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="order" value="1"/>
    <property name="mappings">
        <props>
            <prop key="/search/categories">categoriesController</prop>
        </props>
    </property>
</bean>

但是,在Spring 3.0.5中,/search/categories/(注意尾部斜杠)未映射到控制器。只映射/search/categories(没有尾部斜杠)。

我知道XML配置在未来被弃用了,不幸的是,我现在还无法摆脱它。但我不确定为什么使用Spring 3.0.5会有带尾随斜杠的URL的新行为。有关可能修复的任何建议或想法?我是否需要实现Apache Rewrite条件以删除URL上的尾部斜杠?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我会说最简单的解决方案是create a BeanPostProcessor修剪掉斜杠。

或者,更好的是BeanFactoryPostProcessor,这样你就可以编辑bean定义,而不是实际的bean。