程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 值棧(Structs2),structs2

值棧(Structs2),structs2

編輯:JAVA綜合教程

值棧(Structs2),structs2


1. 關於值棧:

1). 登陸 時, ${userName} 讀取 userName 值, 實際上該屬性並不在 request 等域對象中, 而是從值棧中獲取的.

2). ValueStack:

I. 可以從 ActionContext 中獲取值棧對象

//1. 獲取值棧
ValueStack valueStack = ActionContext.getContext().getValueStack();
//2. 創建 Test 對象, 並為其屬性賦值
Test object = new Test();
object.setUserName("abc");
object.setUserPsw("123");

//3. 把 Test 對象壓入到值棧的棧頂!
valueStack.push(object);


II. 值棧分為兩個邏輯部分

> Map 棧: 實際上是 OgnlContext 類型, 是個 Map, 也是對 ActionContext 的一個引用. 裡邊保存著各種 Map:
requestMap, sessionMap, applicationMap, parametersMap, attr

> 對象棧: 實際上是 CompoundRoot 類型, 是一個使用 ArrayList 定義的棧. 裡邊保存各種和當前 Action 實例相關的對象.
是一個數據結構意義的棧.

2. Struts2 利用 s:property 標簽和 OGNL 表達式來讀取值棧中的屬性值

1). 值棧中的屬性值:

> 對於對象棧: 對象棧中某一個對象的屬性值

> Map 棧: request, session, application 的一個屬性值 或 一個請求參數的值.

2). 讀取對象棧中對象的屬性:

> 若想訪問 Object Stack 裡的某個對象的屬性. 可以使用以下幾種形式之一:

object.propertyName ; object['propertyName'] ; object["propertyName"]

> ObjectStack 裡的對象可以通過一個從零開始的下標來引用. ObjectStack 裡的棧頂對象可以用 [0] 來引用,
它下面的那個對象可以用 [1] 引用.

[0].message

> [n] 的含義是從第 n 個開始搜索, 而不是只搜索第 n 個對象

> 若從棧頂對象開始搜索, 則可以省略下標部分: message

> 結合 s:property 標簽: <s:property value="[0].message" /> <s:property value="message" />

3). 默認情況下, Action 對象會被 Struts2 自動的放到值棧的棧頂.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved