值栈ValueStack的原理与生命周期?

来源:互联网 发布:软件项目开发过程管理 编辑:程序博客网 时间:2024/06/06 03:05

值栈ValueStack的原理与生命周期?

@ sunRainAmazing

1)ValueStack贯穿整个 Action 的生命周期,保存在request域中,     所以ValueStack和request的生命周期一样。     当Struts2接受一个请求时,会迅速创建ActionContext,      ValueStack,action。然后把action存放进ValueStack,     所以action的实例变量可以被OGNL访问。 请求来的时候,action、ValueStack的生命开始,请求结束,action、         ValueStack的生命结束;  2)action是多例的,和Servlet不一样,Servelt是单例的;  3)每个action的都有一个对应的值栈,值栈存放的数据类型是该action的实例,     以及该action中的实例变量,Action对象默认保存在栈顶;  4)ValueStack本质上就是一个ArrayList;   5)关于ContextMap, Struts 会把下面这些映射压入 ContextMap 中,       parameters  :   该 Map 中包含当前请求的请求参数       request     :   该 Map 中包含当前 request 对象中的所有属性    session :该 Map 中包含当前 session 对象中的所有属性       application :该 Map 中包含当前 application 对象中的所有属性      attr:该 Map 按如下顺序来检索某个属性: request, session,  application       6)使用OGNL访问值栈的内容时,不需要#号,     而访问request、session、application、attr时,需要加#号;   7)注意: Struts2中,OGNL表达式需要配合Struts标签才可以使用。     如:<s:property value="name"/>   8)在struts2配置文件中引用ognl表达式 ,引用值栈的值 ,     此时使用的"$",而不是#或者%;  
原创粉丝点击