希望能具体点
ActionContext为Struts提供数据环境,维护着一个Map结构,ValueStack中的每一个元素都是根对象,Action位于ValueStack的最顶层.ActionContext中封装了servlet对象,从而将Action与Servlet解耦 (即Action无需依赖任何Servlet API).
Map结构如图:
[img]http://dl.iteye.com/upload/attachment/65862/c80e6a5c-51a0-3134-8c79-bd5940724f67.gif[/img]
讲得还可以
http://blog.csdn.net/siobhan/archive/2009/07/25/4378434.aspx
简单点,
ActionContext存放上下信息,包括struts2自定义request,response,session等信息.
[code="java"] public static final String ACTION_NAME = "com.opensymphony.xwork2.ActionContext.name";
public static final String VALUE_STACK = "com.opensymphony.xwork2.util.ValueStack.ValueStack";
public static final String SESSION = "com.opensymphony.xwork2.ActionContext.session";
public static final String APPLICATION = "com.opensymphony.xwork2.ActionContext.application";
public static final String PARAMETERS = "com.opensymphony.xwork2.ActionContext.parameters";
public static final String LOCALE = "com.opensymphony.xwork2.ActionContext.locale";
public static final String TYPE_CONVERTER = "com.opensymphony.xwork2.ActionContext.typeConverter";
public static final String ACTION_INVOCATION = "com.opensymphony.xwork2.ActionContext.actionInvocation";
public static final String CONVERSION_ERRORS = "com.opensymphony.xwork2.ActionContext.conversionErrors";[/code]
这都是以map形式存储,字符常量为key存储在ActionContext的对象
ValueStack在struts2中主要指OgnlValueStack,
OgnlValueStack将页面提交的参数在这里转化为action定义的变量。
ActionContext 就是应用上下文,可以通过他来访问session对象等,可以保存的数据,在这个应用中都可以访问该数据。通常用于还回一个session对象。
ValueStack 是OGNL表达式语言中的值栈,
用来封装继承了action接口的类的属性值,在同一个请求范围类有效,在页面中直接通过表达式${属性名}就可以取出。
ActionContext
ActionContext是一个只在当前线程中可用的对象,即它存储在
ThreadLocal中,它用来存放一些同当前的action密切相关的信息。使
用它可以在所有服务于当前请求的对象之间共享信息。在interceptor,
action,及result中均可访问该对象。
ValueStack
ValueStack是一个精心设计的栈结构,在栈中可以存放程序运行过
程中产生的数据以便实现共享。更为重要的是可以使用EL对ValueStack
中的对象进行赋值以及读取对象的信息。所有的EL操作都是针对最先找
到的栈中的对象进行的,搜索顺序为从栈顶到栈底。
[quote][/quote][code="java"][/code][list]
[*]
[/list][img][/img][url][/url][flash=200,200][/flash][table]
||
[/table][align=center][/align][color=violet][/color]