struts2中ValueStack和Stack Context二者的区别

本文介绍了OGNL表达式在数据访问方面的特点,尤其是关于“根对象”的概念及其实现方式。在Struts2框架中,ValueStack作为根对象在数据访问中的角色尤为重要。

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

<1>OGNL访问数据是从StackContext中访问数据的.在OGNL数据访问系统中会假设系统中有一个"根对象",访问"要对象"中的属性或方法时,与其它对象的访问方式不太一样,一般来说访问"根对象"中的属性或方法的方式,比访问其它对象的属性或方法的方式简单.例如:在OGNL系统中有两个对象:
Person对象,并且它在StackContext中的名字是p;
Animal对象,并且它在StackContext中的名字是a;

以上两个对象者有name,sex属性和getter,setter方法.重要的是假设p是根对象.
下面是访问代码:
//访问p的getName()方法
#p.name
//访问a的getName()方法
#a.name
//重点:由于p是"根对象"所以下面的代码访问p的getName()方法,这个访问方式不一样很重要.
#name
<2>Struts2中比传统的OGNL系统多一个ValueStack对象.并且把ValueStack对象设置成"根对象".
小结:
根对象ValueStack在StackContext的内部,StackContext包含所有的数据,当然也包含着"根对象"ValueStack.妙处就是"根对象"中的数据与StackContext中其它"非根对象"中的数据的访问方式不一样.可以与OGNL系统中"根对象"中数据的访问方式不一样,进行联系思考. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值