Struts2中的值棧

2021-05-25 01:19:52 字數 1925 閱讀 2754

眾所周知,strut 2的action類通過屬性可以獲得所有相關的值,如請求引數、action配置引數、向其他action傳遞屬性值(通過chain結果)等等。要獲得這些引數值,我們要做的唯一一件事就是在action類中宣告與引數同名的屬性,在struts 2呼叫action類的action方法(預設是execute方法)之前,就會為相應的action屬性賦值。

要完成這個功能,有很大程度上,struts 2要依賴於valuestack物件。這個物件貫穿整個action的生命週期(每個action類的物件例項會擁有乙個valuestack物件)。當struts 2接收到乙個.action的請求後,會先建立action類的物件例項,但並不會呼叫action方法,而是先將action類的相應屬性放到valuestack物件的頂層節點(valuestack物件相當於乙個棧)。只是所有的屬性值都是預設的值,如string型別的屬性值為null,int型別的屬性值為0等。

在處理完上述工作後,struts 2就會呼叫***鏈中的***,當呼叫完所有的***後,最後會呼叫action類的action方法,在呼叫action方法之前,會將valuestack物件頂層節點中的屬性值賦給action類中相應的屬性。大家要注意,在這裡就給我們帶來了很大的靈活性。也就是說,在struts 2呼叫***的過程中,可以改變valuestack物件中屬性的值,當改變某個屬性值後,action類的相應屬性值就會變成在***中最後改變該屬性的這個值。

從上面的描述很容易知道,在struts 2的的action類可以獲得與屬性同名的引數值就是通過不同的***來處理的,如獲得請求引數的***是params,獲得action的配置引數的***是staticparams等。在這些***內部讀取相應的值,並更新valuestack物件頂層節點的相應屬性的值。而valuestack物件就象乙個傳送帶,將屬性值從乙個***傳到了另乙個***(當然,在這其間,屬性值可能改變),最後會傳到action物件,並將valuestack物件中的屬性的值終值賦給action類的相應屬性

眾所周知,strut 2的action類通過屬性可以獲得所有相關的值,如請求引數、action配置引數、向其他action傳遞屬性值(通過chain結果)等等。要獲得這些引數值,我們要做的唯一一件事就是在action類中宣告與引數同名的屬性,在struts 2呼叫action類的action方法(預設是execute方法)之前,就會為相應的action屬性賦值。

要完成這個功能,有很大程度上,struts 2要依賴於valuestack物件。這個物件貫穿整個action的生命週期(每個action類的物件例項會擁有乙個valuestack物件)。當struts 2接收到乙個.action的請求後,會先建立action類的物件例項,但並不會呼叫action方法,而是先將action類的相應屬性放到valuestack物件的頂層節點(valuestack物件相當於乙個棧)。只是所有的屬性值都是預設的值,如string型別的屬性值為null,int型別的屬性值為0等。

在處理完上述工作後,struts 2就會呼叫***鏈中的***,當呼叫完所有的***後,最後會呼叫action類的action方法,在呼叫action方法之前,會將valuestack物件頂層節點中的屬性值賦給action類中相應的屬性。大家要注意,在這裡就給我們帶來了很大的靈活性。也就是說,在struts 2呼叫***的過程中,可以改變valuestack物件中屬性的值,當改變某個屬性值後,action類的相應屬性值就會變成在***中最後改變該屬性的這個值。

從上面的描述很容易知道,在struts 2的的action類可以獲得與屬性同名的引數值就是通過不同的***來處理的,如獲得請求引數的***是params,獲得action的配置引數的***是staticparams等。在這些***內部讀取相應的值,並更新valuestack物件頂層節點的相應屬性的值。而valuestack物件就象乙個傳送帶,將屬性值從乙個***傳到了另乙個***(當然,在這其間,屬性值可能改變),最後會傳到action物件,並將valuestack物件中的屬性的值終值賦給action類的相應屬性

struts2中的值棧

一丶關於值棧 valuestack 二丶值棧中值得訪問方式 向值棧中訪問值有三種方式 先用actioncontext獲得值棧的物件 actioncontext context actioncontext.getcontext valuestack stack context.getvaluestac...

Struts2中的值棧

1關於值棧 2 struts2會自動的把action物件放入值棧中 1 放入的時間為 當action終將呼叫action類的action方法之前,具體的實現過程如下 先建立乙個struts2 actionproxy物件 在建立strutsactionproxy之後,對其進行初始化時,把action物...

Struts2值棧隨筆

一 值棧 valuestack 是什麼?值棧 valuestack 是struts2的資料中轉站,其中自動儲存了當前action物件和其他相關物件 包括常用的web物件的引用,如request 也可以手動儲存自己是資料物件,同時也可以隨時隨地將物件從值棧取出或操作 通過ognl表示式 值棧,實際是乙...