Struts 2拦截器:工作原理与内置拦截器解析
1. 拦截器的工作机制
在Struts 2中,拦截器是实现工作流控制和功能增强的重要组件。当创建 ActionInvocation 实例后,框架会参考由应用的XML或Java注解创建的声明式架构,确定哪些拦截器应该被触发以及触发的顺序,并将这些拦截器的引用添加到 ActionInvocation 中。 ActionInvocation 还持有其他重要信息的引用,如Servlet请求对象和动作可用结果的映射。
1.1 拦截器的触发过程
框架通过调用 ActionInvocation 的 invoke() 方法来启动动作的执行。当调用该方法时, ActionInvocation 会执行栈中的第一个拦截器。需要注意的是, invoke() 方法并不总是对应第一个拦截器, ActionInvocation 负责跟踪调用过程的阶段,并将控制权传递给栈中合适的拦截器,这是通过调用拦截器的 intercept() 方法实现的。
后续拦截器以及最终动作的执行是通过递归调用 ActionInvocation 的 invoke() 方法实现的。每次调用 invoke() 方法时, ActionInvocation 会根据其状态执行下一个拦截器。
超级会员免费看
订阅专栏 解锁全文
15

被折叠的 条评论
为什么被折叠?



