注: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 元素所能接受的所有屬性.