Interceptor 是 SpringMVC框架提供的类似于控制器Servlet的过滤器Filter的拦截功能,处理登陆校验,请求拦截等。可以通过实现HandlerInterceptor接口或继承HandlerInterceptor接口的实现类来定义,也可以通过实现WebRequestInterceptor接口或继承WebRequestInceptertor接口的实现类来定义。
本文采用实现HandlerInterceptor接口讲解Interceptor用法。
1. 自定义拦截器类实现 HandlerInterceptor 接口
实现接口后必须实现三个执行方法,如下
- public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) ;此方法在控制器方法前执行,返回值为true时,表示继续执行控制器Controller中的请求处理方法;为false时中断后续执行,跳出。
- public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView mav);在控制器中的方法调用后,且解析视图前执行,可以对请求域中的模型和视图做进一步修改。
- public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex) ;在整个请求完成,即视图渲染结束后执行,可以实现资源清理,记录日志信息等。