Springmvc处理器拦截器类似于过滤器Filter
作用:对处理器(web层)进行预处理和后处理

  • 过滤器是servlet的一部分,任何javaweb工程都可以使用,而拦截器是springmvc框架自己的,只有springmvc框架的工程才可以使用
  • 过滤器在url-pattern中配置/* 可以对所有要访问的资源进行拦截,拦截器只会拦截访问控制器的方法,如果是静态资源,是不会进行拦截的
  • 拦截器不依赖于servlet容器,而过滤器依赖于servlet容器
  • 拦截器是基于Java的反射机制,使用代理模式,而过滤器是函数回调
/*
.自定义拦截器
 */
public class MyInterceptor implements HandlerInterceptor {
    /*
    Controller方法执行前处理
    preHandle:预处理
    return false:不放行
 */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return false;
    }
    //Controller方法执行后处理,跳转页面之前
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        
    }
    //页面跳转执行后,执行
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}
<mvc:interceptors>
        <!--配置拦截器-->
        <mvc:interceptor>
	       		 <!--要拦截的具体方法-->
	            <mvc:mapping path="/**"/>
		        <!--不要拦截的方法-->
		        <!--<mvc:exclude-mapping path=""/>-->
        		<!--配置拦截器对象-->
            	<bean class="com.luo.panda.tools.MyInterceptor"/>
        </mvc:interceptor>
</mvc:interceptors>