SpringMVC拦截器介绍
-
(1)什么是拦截器
interceptor,是springmvc提供的用来拦截请求的 -
(2)拦截器与过滤器的区别
filter,是javaEE 提供的用来拦截请求的,所有请求都能拦截
后者只能拦截控制器的方法
-
(3)拦截器的三个方法
HandlerInterceptor接口
执行顺序 -
(4)拦截器的使用
》实现HandlerInterceptor接口
》覆盖重写方法,注意返回值的含义
》配置拦截器
HandlerInterceptor
//1:实现一个接口HandlerInterceptor
public class Demo01Interceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
springmvc.xml
<!--拦截器使用第二步:配置拦截器-->
<mvc:interceptors>
<!--用于测试的拦截器-->
<mvc:interceptor>
<!--拦截路径的配置-->
<mvc:mapping path="/demo05.action"/>
<bean id="interceptor" class="com.wzx.interceptor.Demo01Interceptor"/>
</mvc:interceptor>
</mvc:interceptors>
三个方法的执行顺序
多个拦截器的执行顺序(了解)
springmvc.xml
<!--拦截器使用第二步:配置拦截器-->
<mvc:interceptors>
<!--用于测试的拦截器-->
<mvc:interceptor>
<!--拦截路径的配置-->
<mvc:mapping path="/demo05.action"/>
<bean id="interceptor1" class="com.wzx.interceptor.Demo01Interceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<!--拦截路径的配置-->
<mvc:mapping path="/demo05.action"/>
<bean id="interceptor2" class="com.wzx.interceptor.Demo02Interceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<!--拦截路径的配置-->
<mvc:mapping path="/demo05.action"/>
<bean id="interceptor3" class="com.wzx.interceptor.Demo03Interceptor"/>
</mvc:interceptor>
</mvc:interceptors>
通配符 *
/**
任意目录,任意地址