值栈

一 值栈

值栈是一次请求数据的储存中心,请求结束,对应的值栈也会消失。值栈包含“广义”值栈和“狭义”值栈。

 “广义”值栈: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括起来。

 

posted on 2017-03-17 00:10  背后有人  阅读(126)  评论(0)    收藏  举报

导航