1.什么是ValueStack對于每一個action的調(diào)用,,Struts在執(zhí)行相應的動作方法之前會先創(chuàng)建一個名為ValueStack的對象,。Value Stack用來保存該動作對象或者對象,。由于最終在執(zhí)行Action類相應的action方法之前,,攔截器需要先訪問ValueStack,。視圖也需要訪問ValueStack。Struts框架將其保存在一個名為struts.valueStack的請求屬性中,。 2.獲取valueStack的三種方法:
打印其HashCode碼一模一樣,。 3.ValueStack的內(nèi)容valueStack分為對象棧(Object Stack)和Map棧(Context Map). Struts將把動作和相關對象壓入Object Stack,,而把各種各樣的映射關系壓入Context Map,。 通常說的ValueStack就是指Object Stack,它是一個真正數(shù)據(jù)結構意義的棧,。Object Stack也常常被稱為root(其實是一個ArrayList),。Context Map我們一般稱其為context(是一個HashMap)它是整個OGNL其中包括了root 4.OGNL中的兩種對象OGNL中包含兩種對象,即_root和_value. 1)訪問Context Map里的對象需要在對象名之前添加 # 說明:
5.Struts會把當前訪問的Action實例壓入值棧棧定壓入時間點為:
在調(diào)用該方法前該Action被壓入棧頂,如果在初始化的過程中,,在Action的構造函數(shù)中又初始化了其他類,,這這個類也會被壓入值棧。所以最后棧頂?shù)脑貢沁@個新初始化的類,。 6.ValueStack中對象的存取Object Stack 的存放: push 或者 add: 將一個對象放入Object Stack的棧頂:
Object Stack的提取: peek() 或 pop() peek()取得的是棧頂元素:
Object Stack的元素的彈出:pop:
7.動態(tài)修改ValueStack中對象的屬性說明: |
|
來自: Baruch > 《SSHAndSSM》