-------------------siwuxie095
拦截器底层原理
拦截器的底层主要使用了两个原理:
(1)AOP 思想
(2)责任链模式
AOP 思想
AOP 是面向切面(方面)编程,若要在基本功能之上进行扩展,AOP 可以
不通过修改源代码的方式来扩展功能
责任链模式
1、在 Java 中有 23 种设计模式,责任链模式是其中的一种
2、责任链模式和过滤器链很相似
1)过滤器链
一个请求可以有多个过滤器进行过滤,每个过滤器只有做放行操作
才能到下一个过滤器
2)责任链模式
要执行多个操作,如:添加、修改、删除三个操作
首先执行添加操作,添加操作执行之后,做类似于放行操作;
然后执行修改操作,修改操作执行之后,做类似于放行操作;
最后执行删除操作,删除操作执行之后,做类似于放行操作
拦截器底层原理的具体应用
1、拦截器的执行
在 Action 对象创建之后,在 Action 方法执行之前
2、在 Action 方法执行之前,执行默认拦截器,执行过程使用 AOP
思想。注意:在 Action 中没有直接调用拦截器的方法,而是通过配
置文件的方式中进行操作
3、在执行拦截器时,执行很多的拦截器,这个过程使用责任链模式
「注意:默认拦截器中也有很多拦截器」
假如要执行三个拦截器:
首先执行拦截器 1,拦截器 1 执行之后,放行;
然后执行拦截器 2,拦截器 2 执行之后,放行;
最后执行拦截器 3,拦截器 3 执行之后,放行;
三个拦截器执行完毕后,执行 Action 方法
4、查看源代码
从核心过滤器的 doFilter() 方法进入
(1)执行 Action
(2)继续执行
(3)使用动态代理的方式创建 Action 对象
(4)执行 Action 方法
(5)类似于放行操作
(6)执行拦截器
【made by siwuxie095】