创建ActionContext做的工作
* 在actionContext中存在一个Map<String, Object>
* ValueStack stack = dispatcher.getContainer().getInstance(ValueStackFactory.class).createValueStack();
通过静态注入创建ValueStack的实现类:OgnlValueStack,也就意味着在创建actionContext的时候,值栈就被创建了
* ValueStack中的map栈和ActionContext中的Map是一样的
* 通过ActionContext.setContext(ctx);就把actionContext放入到ThreadLocal中,这样数据就安全了
ActionProxy的创建
* ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
namespace, name, method, extraContext, true, false);
* 在createActionProxy的时候
ActionInvocation inv = new DefaultActionInvocation(extraContext, true);
创建了DefaultActionInvocation
在创建ActionProxy的时候,就已经执行invocation的init方法
invocation的init方法做的事情:
action的创建和所有的拦截器的创建
执行invocation中的inovke方法
* 执行了所有的拦截器
* 执行了当前请求的action
* 执行了结果集
struts2流程
最新推荐文章于 2024-10-06 20:16:20 发布