SpringMVC 拦截器
2
SpringMVC 拦截器
拦截器(Interceptor)作用
SpringMVC 的拦截器类似于Servlet开发中的过滤器Filter ,用于对处理器进行预处理和后处理
将拦截器按一定顺序联结成一条链,这条链称为 拦截器链(Intercepter Chain). 在访问被拦截的方法或者字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用,拦截器也是AOP思想的具体实现.
拦截器和过滤器区别
| 过滤器(Filter) | 拦截器(Interceptor) | |
|---|---|---|
| 使用范围 | 是Servlet规范中的一部分,任何Java Web项目都可以使用 | 是SpringMVC框架的一部分,只有使用了SpringMVC框架的工程可以使用 |
| 拦截范围 | 在Url-pattern中配置了 /* 之后,可以对所有要访问的资源拦截 | 在<mvc:mapping path=" "/> 中配置了 /** 之后,也可以对所有资源进行拦截,但是可以通过<mvc:exclude-mapping path=" "/>排除不需要拦截的资源 |
实现步骤
-
创建拦截器类实现 HandlerInterceptor接口
public class MyInterceptor1 implements HandlerInterceptor { @Override //目标方法执行之前 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("PreHandler exec..........."); return true;//false 直接拦截 true 放行 } @Override //目标方法执行之后 视图返回之前 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandler exec..........."); } @Override //整个流程都执行完毕之后执行 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion exec..........."); } } -
配置拦截器
<!--配置拦截器--> <mvc:interceptors> <mvc:interceptor> <!--对哪些资源执行拦截操作--> <mvc:mapping path="/**"/> <bean class="me.aowu.controller.me.aowu.interceptor.MyInterceptor1"/> </mvc:interceptor> </mvc:interceptors> -
测试拦截器的拦截效果

执行顺序(层包)!!
