1、拦截器的编写必须实现HandleIntegerCeptor接口,在xml配置文件中添加<mvc:annotation-driven />或者使用注解@EnableWebMvc时,系统就会初始化ConversionServiceInterceptor,他是一个开始就被springmvc系统默加载的拦截器,他的主要作用就是根据配置在控制器上的注解来完成对应的功能。
2、客户端发送请求,首先经过prehandle方法,此时获取绑定的数据,如果已经登录并且绑定数据则返回true,如果没有登录绑定数据则返回false并且跳转到其他的页面
3、public class Logi艘绒庳焰nIntercepter extends HandlerInterceptorAdapter撑俯擂摔{@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {HttpSession session = request.getSession();User u = (User) session.getAttribute("user");
4、if(u!=null){System.out.println("拦截器验证登录");return true;}System.out.println("拦截器验证未登录");response.sendRedirect("login.do");return false;}
5、此方法只有在请求期间发生异常时执行@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {System.out.println("异常时执行");super.postHandle(request, response, handler, modelAndView);}
6、@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {System.out.println("拦截器执行完毕");super.afterCompletion(request, response, handler, ex);}此方法会在拦截器成功时执行,如果发生异常则不执行此方法,该方法的执行依赖对应的preHandle方法的返回值为true时才会执行;
7、整个拦截器的模式责任链模式,(在一个请求或者链上有多个处理拦截)(个人理解),这种开发模式可以认为是责任链模式;