一、实现拦截器
我们编写类实现HandlerInterceptor接口,并实现该接口的preHandle()、postHandle()、afterCompletion()三个方法即可。
public class LoginInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("拦截前------------->");
return true;
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("拦截中------------->");
}
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("拦截后------------->");
}
}
二、三个方法介绍
1.preHandle()
此方法是在请求前调用,若返回true则可以请求。
2.postHandle()
此方法是在请求返回ModelAndView时启用。
3.afterCompletion()
此方法实在请求结束后启用
由于拦截器是链式结构所以假如有两个拦截器,方法执行的顺序是
a1–b1—b2–a2–b3—a3
先顺序执行各自preHandle
再倒序执行各自的postHandle和afterCompletion
三、在springMVC里配置拦截器
<!--拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 用户认证拦截 -->
//映射的url,当请求这个url时会触发该拦截器
<mvc:mapping path="/**" />
//拦截器的类
<bean class="frame.uitls.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<!-- 授权拦截 -->
<mvc:mapping path="/**" />
<bean class="frame.uitls.interceptor.PermissionInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>