struts2 理解ActionContext对象和OGNL

OGNL(对象图导航语言),是struts2专用的标记语言
一、作用:
(1)获取ActionContext中的数据 (2)集合操作,即访问List、Map
二、理解ActionContext对象:
(1)ActionContext对象是struts2的数据中心,在一次符合/*的请求到来时,框架负责创建,放置在request域对象中。
(2)ActionContext可分为以下几个子对象:

(3)ActionContext有个非常重要的和特殊的对象,叫值栈(ValueStack),它是action的数据中心,在一次/*请求来临时,框架负责创建,放置在request域对象中。
三、值栈
分为两部分:
(1)对象栈(list集合)
action的实例
action的属性
(2)Map栈(map集合)
通过valueStack的api操作的对象,即valueStack.set…

struts2 理解ActionContext对象和OGNL_第1张图片

*在struts2中,不提倡使用request来存内容,而使用ValueStack来替换requset对象。
四、OGNL几种符合用法
(1) #
A:访问ActionContext对象
B:访问集合Map:#{“male”:”男”,”female”:”女”}
C:访问List集合:
a)集合的投影:
userList.{username} (可取出List里面JavaBean的username属性)。
b)集合的过滤:
userList.{?#this.age>22}
userList.{^#this.age>22}
userList.{$#this.age>22}.{?#this.gender==”男”} (age>22 and gender==’男’)
?#表示所有对象
^#表示第一个对象
$#表示最后一个对象
this表示当前迭代的这个对象
c)集合的投影和过滤:
userList.{?#this.age>22}[0]
[0]表示符合条件的第一个对象
[1]表示符合条件的第二个对象

什么情况下使用#:
*非值栈
*获取JavaBean属性值

(2) %{}
在标志的属性为字符串类型时使用。比如:
(3) ${}(不是EL)
访xml 可 以 访 问 x m l 本 身 的 数 据 。 {}也可以访问Action实例变量,前提Action一定要对该实例变量提供getXxx()方法。
(4)访问集合List或{}
value=’{“AA”,”BB”,”CC”,”DD”}’

        欢迎扫码关注微信公众号:擒贼先情王(qingshang733)

struts2 理解ActionContext对象和OGNL_第2张图片

你可能感兴趣的:(struts2,javaweb)