关于spring的interceptor,这里给一个栗子注明各方法的作用
//以下是关于一个interceptor的基本方法
public class TestInterceptor01 implements HandlerInterceptor {
//返回值表示是否要将当前请求拦截下来
//如果返回false,请求将被终止,否则继续运行
//Object参数表示的是被拦截的请求的目标对象
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("执行到preHandle");
return true;
}
//ModelAndView可以用来改变显示的视图或者修改发往视图的方法
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("执行到postHandle");
modelAndView.setViewName("form");
modelAndView.addObject("passWord","slksljfldls");
}
//视图返回之后的方法,主要用于销毁占用的资源
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("执行到afterCompletion");
}
}
然后的interceptor的配置
<mvc:interceptors>
<mvc:interceptor>
<!-- path的值是该拦截器能够拦截的请求 -->
<mvc:mapping path="/interceptor/demo01"/>
<bean class="com.imooc.interceptor.TestInterceptor01"/>
</mvc:interceptor>
</mvc:interceptors>
在一个项目中配置多个拦截器是可行的,但是其执行顺序是按照perHandle1——preHandle2——afterComletion2——afterCompletion1这样去执行的。