在Spring MVC 中配置了拦截器不起作用
spring mvc一部分配置文件
1 <!-- 启动 mvc 注解驱动 --> 2 <mvc:annotation-driven/> 3 <!-- 静态资源处理 --> 4 <mvc:default-servlet-handler/> 5 6 <!-- 后台访问拦截器 --> 7 <mvc:interceptors> 8 <mvc:interceptor> 9 <mvc:mapping path="/**"/> 10 <mvc:exclude-mapping path="/system/login"/> 11 <mvc:exclude-mapping path="/system/get_cpacha"/> 12 <mvc:exclude-mapping path="/h-ui/**"/> 13 <mvc:exclude-mapping path="/easyui/**"/> 14 <bean class="cn.fereli.interceptor.LoginInterceptor"></bean> 15 </mvc:interceptor> 16 </mvc:interceptors> 17 18 <!-- 3.视图的解析器--> 19 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 20 <property name="prefix" value="/WEB-INF/views/"></property> 21 <property name="suffix" value=".jsp"></property> 22 </bean>
网上有的说是因为在spring-mvc.xml文件中配置了
<mvc:annotation-driven/>导致拦截器不起作用,因为在这个标签中默认有一个拦截器《这句会其实它已经注册了一个DefaultAnnotationHandlerMapping ,而在后面你自己注册的优先级没它内部的高,所以一直都不会调用你注册的拦截器。
既然 <mvc:annotation-driven/>的拦截器优先级高,所以你在配置你的视图解析器的时候就将将他优先级提高
1 <!-- 后台访问拦截器 --> 2 <mvc:interceptors> 3 <!--在这里把拦截器的全类名声明好,结果问题解决了--> 4 <bean class="cn.fereli.interceptor.LoginInterceptor"/> 5 <mvc:interceptor> 6 <mvc:mapping path="/**"/> 7 <mvc:exclude-mapping path="/system/login"/> 8 <mvc:exclude-mapping path="/system/get_cpacha"/> 9 <mvc:exclude-mapping path="/h-ui/**"/> 10 <mvc:exclude-mapping path="/easyui/**"/> 11 <bean class="cn.fereli.interceptor.LoginInterceptor"></bean> 12 </mvc:interceptor> 13 </mvc:interceptors>
来源:博客园
作者:Fereli
链接:https://www.cnblogs.com/Fereli/p/11588741.html