我的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?
拦截器不会被调用。我不确定为什么会出现这种情况。我必须确保所有网络流量都通过拦截器。
答案 0 :(得分:1)
如果您想确保为每个进入的Web请求执行一段代码,我建议使用Filter而不是HandlerInterceptor。 Spring MVC可能会在调用拦截器之前尝试解析查询字符串或其他内容,或者由于无效的url而无法找到处理程序。