值栈
一 值栈
值栈是一次请求数据的储存中心,请求结束,对应的值栈也会消失。值栈包含“广义”值栈和“狭义”值栈。
“广义”值栈:ActionContext; ServletActionContext;
广义值栈的存储的数据有:
1.请求的参数(parameters)
注意:广义值栈中存储的参数是原请求参数的拷贝
2.request , session , application 请求范围的属性
3.ValueStack('狭义'值栈) 它是ONGl上下文的跟对象
‘狭义’值栈:ValueStack
1. Action实例化对象
2.Ognl在计算过程中的临时变量
3.可以在代码中设置ValueStack中的值
二 Ognl(对象导航图语言)
Ognl是一种强大的EL.
Ognl可以访问属性,方法,生成List集合和Map集合
如果Ognl访问上下文根对象时,可以直接访问对象中的属性值
1.Ognl生成List集合的方式
Ognl.getValue({'属性1',‘属性2’})
2.Ognl生成Map集合的方式
Ognl.getValue(#{'key1':'value1','key2':'value2'})
3.Ognl访问List集合中的元素
Ognl.getValue("list[index]")
4.Ognl访问Map集合的value
Ognl.getValue("map[key]")
5.Ognl对集合进行过滤
Ognl.getValue(list.{?#this.id>=3}) 获取集合中id大于3的所有元素
Ognl.getValue(list.{$#this.id>=3}) 获取集合中id大于3的最后一个元素
Ognl.getValue(list.{^#this.id>=3}) 获取集合中id大于3的第一个元素
6.Ognl访问各种属性范围
#request.属性名
#session.属性名
#application.属性名
7.Ognl访问参数
#parameter.参数名
三:Struts2常用标签
1.显示数据的标签
<s:property value="支持Ognl"/>
2.<s:if test=“条件”>
如果为true ,执行此区域
</s:if>
<s:elseif test="条件">
如果为true ,执行此区域
</s:elseif>
<s:else>
如果以上都不为true,执行此处
</s:else>
3.迭代标签
<s:iterator var="fruit" status="st" value="fruitList(支持Ognl)">
<s:/iterator>
4 url标签
<s:url value="%{#request.address}"/>
注意:value是以字符串的形式输出,如果使用Ognl的计算结果,需要在Ognl表达式前面加%,并用{}将Ognl括起来。
浙公网安备 33010602011771号