一 . 过滤器:
过滤器能够对目标资源的请求和响应进行截取。
- 可以通过@Component将Filter交给Spring容器处理
@Component的形式是对所有资源都进行拦截,不存在URL的正则匹配 - 也可以不实用此注解直接编写Configuration类来实现。
Configuration的形式可以配置URL正则匹配
二. 拦截器Interceptor
java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作
需要注意的是:filter只能获取到request和response,然后从这两个类中获取到一些信息,filter并不能获取到过滤到的是哪一个controller和哪一个方法,如果想要知道这些,那么需要拦截器。
三.切面
aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
拦截器只能获取到类和方法的信息,但是对于方法中参数的值、和方法执行完毕后返回的数据,拦截器是得不到的,我们可以通过切面来获取。
参考资料: