Filter过滤器:拦截web访问url地址,在拦截器的访问之前。
HandlerInterceptor:是 Spring MVC项目中的拦截器,它拦截的目标是请求的地址Controller,比MethodInterceptor先执行。
实现一个HandlerInterceptor拦截器可以直接实现HandlerInterceptor接口,也可以继承HandlerInterceptorAdapter类。
这两种方法殊途同归,其实HandlerInterceptorAdapter也就是声明了HandlerInterceptor接口中所有方法的默认实现,而我们在继承他之后只需要重写必要的方法。
Spring AOP拦截器:只能拦截Spring管理Bean的访问(业务层Service)
Filter与Interceptor联系与区别
1. 拦截器是基于java的 反射机制 ,使用代理模式,而过滤器是基于函数回调。
2. 拦截器不依赖 servlet 容器,过滤器依赖于servlet容器。
3. 拦截器只能对Controller起作用,而过滤器可以对几乎所有的请求起作用(可以保护资源)。
4. 拦截器可以访问action上下文,堆栈里面的对象,而过滤器不可以。
5. 执行顺序:过滤前-拦截前-Controller处理-拦截后-过滤后。