定义
DispatcherServlet收到请求之后,如果有拦截器,则先执行,拦截器的方法,然后再执行处理器的方法。
注:
过滤器属于Servlet规范,而拦截器属于Spring框架。
如何写拦截器?
step1. 写一个java类,实现HandlerInterceptor接口。
step2. 在拦截器方法里面,实现拦截处理逻辑。
step3. 配置拦截器。
public class SomeInterceptor implements
HandlerInterceptor{
/**
* 请求处理完毕,最后执行的方法。
* (了解)
* arg3:处理器所抛出的异常。
*/
public void afterCompletion(
HttpServletRequest arg0,
HttpServletResponse arg1,
Object arg2, Exception arg3)
throws Exception {
System.out.println("afterCompletion()");
}
/**
* 处理器(Controller)方法已经执行完毕,
* 正准备将处理结果(ModelAndView)返回
* 给DispatcherServlet之前,执行postHandle
* 方法。
* 注:
* 可以在该方法里面,修改处理结果。
*/
public void postHandle(
HttpServletRequest arg0,
HttpServletResponse arg1,
Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("postHandle()");
}
/**
* DispatcherServlet会先调用拦截器的
* preHandle方法,如果该方法返回值为
* true,则继续向后调用;否则,中断请求
* (不再向后调用)。
* (了解)
* arg2:是一个描述处理器方法的对象。
*/
public boolean preHandle(
HttpServletRequest arg0,
HttpServletResponse arg1,
Object arg2) throws Exception {
System.out.println("preHandle()");
return true;
}
}