SpringMVC的拦截器(Interceptor)
SpringMVC的拦截器可以理解为时以前的Filter,在真正到达资源之前做事情的
拦截器的使用流程
- 自定义一个拦截器类
继承 HandlerInterceptorAdapter
实现 HandlerInterceptor(接口中三个方法都是default修饰) - 在自定义类重写方法
PreHandle 预先处理(controller之前执行) AOP的前置
PostHandle 请求后处理(controller之后执行)AOP的后置
AfterCompletion 完成后处理(controller执行完毕后执行)
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*"/><!--拦截的请求-->
<bean class="interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
package interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 这个类是我们自定义的拦截器类
* 继承 HandlerInterceptorAdapter
* 或 实现 HandlerInterceptor
*/
public class MyInterceptor implements HandlerInterceptor {
//快捷键 Ctrl+O
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("到达字眼之前执行");
return false; //true表示放行
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("controller执行后的方法");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("最终方法");
}
}