一. SpringMVC拦截器
1.1 拦截器(interceptor)的作用
Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。
将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方 法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。
1.2 拦截器和过滤器区别
1.3 拦截器使用
自定义拦截器三步:
1 创建拦截器类实现HandlerInterceptor接口
2 配置拦截器
3 测试拦截器的拦截效果
public class MyInterceptor implements HandlerInterceptor {//在目标方法执行之前运行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("pre.....");return false;}//在目标方法执行之后,视图对象返回之前执行@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("post.....");HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}//在流程都执行完毕后执行@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("after.....");HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.example.interceptor.MyInterceptor"/></mvc:interceptor> </mvc:interceptors>
1.4 多拦截器操作
同上,在编写一个MyHandlerInterceptor2操作,测试执行顺序
配置文件中添加 <bean class="com.example.interceptor.MyInterceptor2"/>