AOP
AOP,面向切面编程,是一种编程思想。
Java中常见的AOP技术
有两个分别是Filter和代理模式(也可以称为过滤器和拦截器),Filter是基于回调函数。
代理模式是基于Java反射技术。
代理模式又分为静态代理和动态代理,动态代理就是拦截器的简单实现。
Spring AOP
Spring AOP,是AOP的一种实现,使用的是代理模式。
Filter
Filter(过滤器)是J2EE的规范,Servlet2.3开始引入/实现的是职责链模式。Filter可以用来设置字符集、控制权限、控制转向等等。Filter也是AOP的一种实现。
Interceptor
Interceptor (拦截器),是Struct2中的概念。同样是AOP的一种实现。
Filter与Interceptor联系与区别
1. 拦截器是基于java的反射机制,使用代理模式,而过滤器是基于函数回调。
2. 拦截器不依赖servlet容器,过滤器依赖于servlet容器。
3. 拦截器只能对action起作用,而过滤器可以对几乎所有的请求起作用(可以保护资源)。
4. 拦截器可以访问action上下文,堆栈里面的对象,而过滤器不可以。
5. 执行顺序:过滤前-拦截前-Action处理-拦截后-过滤后。