1關於值棧
2 struts2會自動的把action物件放入值棧中
1)放入的時間為:當action終將呼叫action類的action方法之前,具體的實現過程如下;
>先建立乙個struts2 actionproxy物件
>在建立strutsactionproxy之後,對其進行初始化時,把action物件放入值棧中
2)個人理解:
【每次發生乙個action請求時,並不是把立刻跳到相應的action中,而是先生成一action例項,把action例項的屬性都放入值棧中,
此時放入值棧的action物件的屬性還是沒有賦值的只是預設值,然後當執行到action相對應的方法時,會自動的把屬性和action請求資訊中的屬性一一匹配】
(可以在值棧放入action之前進行除錯,了解全過程compoundroot的add()方法設定斷點)
就是存放action的堆疊,當我們提交乙個請求道伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存在action中的資料時,首先從棧頂開始 搜尋,若找到相同的屬性名(與要獲得的資料的屬性名相同)時,即將值取出,但這種情況可能出現找到的值不是我們想要的值,那麼解決此問題需要用top語法 和n語法來進行解決。
當在客服端進行跳轉時,當有請求提交到伺服器的action時,只有乙個堆疊存在,堆疊中存放的是當前的請求的action,而原來那麼則銷毀了
當有請求的時候,struts2會為每個請求建立乙個新的值棧,也就是說,棧和請求是一一對應的,不同的請求,值棧也不一樣,而值棧封裝了一次請求所有需要操作的相關的資料。
正是因為值棧和請求的對應關係,因此值棧能保證執行緒安全的為每個請求提供公共的資料訪問服務。
而值棧是怎樣產生的呢??伴隨action請求而產生
值棧怎樣獲得呢?valuestack valuestack=actioncontext.getcontext().getvaluestack();
Struts2中的值棧
眾所周知,strut 2的action類通過屬性可以獲得所有相關的值,如請求引數 action配置引數 向其他action傳遞屬性值 通過chain結果 等等。要獲得這些引數值,我們要做的唯一一件事就是在action類中宣告與引數同名的屬性,在struts 2呼叫action類的action方法 預...
struts2中的值棧
一丶關於值棧 valuestack 二丶值棧中值得訪問方式 向值棧中訪問值有三種方式 先用actioncontext獲得值棧的物件 actioncontext context actioncontext.getcontext valuestack stack context.getvaluestac...
Struts2值棧隨筆
一 值棧 valuestack 是什麼?值棧 valuestack 是struts2的資料中轉站,其中自動儲存了當前action物件和其他相關物件 包括常用的web物件的引用,如request 也可以手動儲存自己是資料物件,同時也可以隨時隨地將物件從值棧取出或操作 通過ognl表示式 值棧,實際是乙...