拦截器简介
拦截器是一种动态拦截方法调用的机制
作用:
- 在指定的方法调用后执行预先设置后的代码
- 阻止原始方法的执行
核心原理:aop思想
拦截器链:多个拦截器按照一定的顺序,对原始被调用功能进行增强
拦截器vs 过滤器
归属不同:Filter属于servelet技术,interceptor属于spring MVC 技术
拦截内容不同:Filter对所有访问进行增强,interceptor仅针对springmvc的访问增强
如何配置拦截器?
第一步
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("前置运行。。。");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("后置运行。。。");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("完成运行。。。。");
}
}
第二步
@RequestMapping("handleRun")
public String handleRun(){
System.out.println("业务处理器运行------main");
return "page.jsp";
}
第三步配置spring mvc
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/handleRun"/>
<bean class="com.itheima.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>