2018.11.26 struts2流程源码

struts2的架构图

从最上面的类开始,也就是i 我们的核心过滤器strutsPrepareAndExecuteFilter

判断当前请求是否由struts2来处理,如果是就往else走,不由它来处理就走85行

创建数据中心

actionContext的由来(把valueStack创建出来在从里面取出来Context部分)

从valueStack中查找 包括Root和Context

从valueStack中查找 包括Root和Context

回到StrutsPrepareAndExecuteFilter源码

研究一下request的包装类

super调用父类的方法

提取信息

接着把信息传递进去 创建ActionProxy对象

把当前的invocation传过去

选择第二个interupt方法进去

189是放行的代码

为什么上面是if来循环拦截器的呢?因为拦截器把自己传过去不断调用invoke方法,算是递归的方式来实现的

request.getAttribute的获取方法

查找顺序

完整流程图

原文地址:https://www.cnblogs.com/qichunlin/p/10021199.html