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>