SpringMVC中的拦截器
拦截器和过滤器的区别
相同点
都可以拦截请求
不同点:
过滤器是在DispatherServlet执行之前拦截请求的,而拦截器是作用于DispacthServlet和Controller之间
拦截器使用步骤
1.实现HandlerInterceptor接口
2.重写三个方法
preHandle()//contoller方法执行之前被拦截 返回值为true表示放行
postHandle /controller方法执行之后被拦截
afterCompletion()//处理完视图之后
3.在springmvc配置文件中声明拦截器
<!--配置拦截器-->
<mvc:interceptors>
<!--单个拦截器-->
<mvc:interceptor>
<!--拦截路径-->
<mvc:mapping path="/**"/> /**代表所有路径
<!--放行路径-->
<mvc:exclude-mapping path="/file"/>
<!--IOC容器中具体的拦截器-->
<ref bean="myInteraptor" />
</mvc:interceptor>
</mvc:interceptors>
多个拦截器的执行顺序
1.和在springmvc的配置文件声明的顺序有关
- preHandle()//按照配置的顺序执行
postHandle //按照配置的倒序执行
afterCompletion()//按照配置的倒序执行
preHandle返回false的拦截器之后的拦截器的preHandle都会执行,postHandler都不会执行它之前的afterCompletion会执行