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

值栈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表达式 ,引用值栈的值 , 
    此时使用的"$",而不是#或者%;  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值