struts2 ValueStack总结

本文详细解读了Struts2框架中ValueStack接口及其内部实现,包括其核心组件root和context,以及如何通过OGNL语言进行对象属性访问。阐述了ValueStack的生命周期与Action的一致性,并提供了获取ValueStack的多种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ValueStack(值栈)是Struts2定义的一个接口,它的默认实现类是OgnlValueStack,该类使用到了OGNL表达式技术来访问java对象。ValueStack包含两个对象:root和context。root是一个compoundRoot类对象,该类继承ArrayList类,又拥有栈的push和pop方法,context实际是一个map;它的类型是OgnlContext,即OGNL表达式上下文。总的来说,Struts2的值栈就是对OGNL的一个封装,要对ValueStack理解清楚,必须得对OGNl语言有一定的了解。

 ValueStack的基础是OGNL语言,OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。具体详细见http://developer.51cto.com/art/201203/322509.htm。

ValueStack的生命周期和Action一致,每个Action都拥有一个ValueStack,ValueStack的root栈中存储着Action对象和其他对象。所以取得ValueStack可以有以下几种方式:

ValueStack valueStack = ActionContext.getContext().getValueStack();
ValueStack valueStack = ServletActionContext.getValueStack(ServletActionContext.getRequest()); 
ValueStack valueStack = (ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack");

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值