注:struts2自动将Action放入到值栈中
放入的时间点:struts2最终会调用Action类的action方法,但是,在此之前:
--->会先创建一个StrutsActionProxy对象
--->在创建StrutsActionProxy对象后,会对其惊进行初始化,初始化时,把action放入了值栈
1. property 标签:<s:property> 标签用来输出一个值栈属性的值:
1.1 对于对象栈而言:打印值栈中对象的属性值。
<s:property value="productId" />
1.2 对于Map栈而言,打印request,session,application,或请求参数的某个属性值。
<s:property value="#session.date" />
2.URL标签
3.set 标签:set 标签用来在以下 Map 对象里创建一个键值对:
–ValueStack 值栈的 ContextMap 值栈
–Map 类型的 session 对象
–Map 类型的 application 对象
–Map 类型的 request 对象
–Map 类型的 page 对象
<!-- s:set标签会自动进行OGNL解析(在值栈中查找productId所代表品的值),然后在指定的scope添加一个键值对 -->
<s:set name="productId" value="productId" scope="session"></s:set>
roductId:${sessionScope.productId }
4.push 标签 :push 标签将把一个对象压入 ValueStack 而不是压入 ContextMap. •push 标签在标签起始时把一个对象压入栈, 标签结束时
将对象弹出栈.
<%
Person person = new Person();
person.setAge(12);
session.setAttribute("person", person);
%>
<s:push value="#session.person">
${name}
</s:push>
5.if, else 和 elseif 标签
<!-- 可以直接使用值栈中的属性,自动进行OGNL解析 -->
<s:if test="productId >100">产品id大于100</s:if>
<s:elseif test="productId <10">产品id大于100</s:elseif>
<s:else>产品</s:else>
6.iterator 标签:标签用来遍历一个数组, Collection 或一个 Map,并把这个可遍历对象里的每一个元素依次压入和弹出ValueStack 栈
<%
List<Person> persons= new ArrayList<Person>();
persons.add(new Person("aa",10));
persons.add(new Person("bb",20));
persons.add(new Person("cc",30));
persons.add(new Person("dd",40));
persons.add(new Person("ee",50));
request.setAttribute("persons", persons);
%>
<s:iterator value="#request.persons">
${name} ---- ${age}<br>
</s:iterator>
7.sort 标签 sort 标签用来对一个可遍历对象里的元素进行排序
8.date 标签 date 标签用来对 Date 对象进行排版
9.`a 标签 a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性.