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的获取方法
查找顺序
完整流程图




