为什么Spring拦截器被错误的URL绕过?

时间:2018-03-15 21:15:11

标签: spring-mvc

我的Web应用程序在Spring(MVC)4.2.9.RELEASE,Hibernate 5.1.3.Final和Spring Data 1.8.2.RELEASE上运行。

我在Spring上下文中有以下拦截器。

<bean id="handlerMapping"
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="order" value="1"/>
    <property name="interceptors"> 
        <list>
                ...
            <ref local="myIntercepter" /> 
            ... 
        </list> 
    </property>
</bean>

拦截器&#34; myIntercepter&#34;能够拦截有效的URL,例如

http://localhost/s?mid=cflbv1zipb8d7&lang=en_US

但是,对于以下无效网址(最后有一个问号)

http://localhost/s?mid=cflbv1zipb8d7&lang=en_US?

拦截器不会被调用。我不确定为什么会出现这种情况。我必须确保所有网络流量都通过拦截器。

1 个答案:

答案 0 :(得分:1)

如果您想确保为每个进入的Web请求执行一段代码,我建议使用Filter而不是HandlerInterceptor。 Spring MVC可能会在调用拦截器之前尝试解析查询字符串或其他内容,或者由于无效的url而无法找到处理程序。