如何更改spring请求映射以禁止带后缀的url模式

时间:2015-06-03 04:01:31

标签: spring-mvc

我正在使用Spring MVC 3.2并在Apache Tomcat 1.7x中部署。我的登录网址为/web/login,但使用网址/web/login.abc,其中abc可以是任何文字,包括空格。

在这两种情况下,它都返回我想要避免的相同资源,并返回HTTP代码404。

尝试在 web.xml 中添加以下内容,但它没有帮助

`<beans:bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <beans:property name="useDefaultSuffixPattern" value="false" />
</beans:bean>`

1 个答案:

答案 0 :(得分:2)

此配置取决于您在问题中省略的版本。 从Spring 4.0.3 开始,在PathMatchConfigurer类上设置后缀属性。根据{{​​3}},配置应位于mvc:annotation-driven下,例如

  <mvc:annotation-driven>
    <mvc:path-matching suffix-pattern="false" />
  </mvc:annotation-driven>

,如Spring doc

中所述
  

匹配模式时是否使用后缀模式匹配(".*")   要求。如果启用,映射到"/users"的方法也匹配   "/users.*"。默认值为 true

对于 Spring 3.2 ,它应该是

  <beans:bean id="handlerMapping"
 class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
      <beans:property name="useSuffixPatternMatch" value="false"/>
  </beans:bean>`

此外,如果您在配置中使用mvc:annotation-driven元素,请记下此问题中的Biju答案docs