国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Struts2中valuestack

2019-11-08 03:09:42
字體:
供稿:網(wǎng)友

通過對struts2的一段時(shí)間的接觸,將自己對OGNL的核心值棧說說,值棧:簡單的說,就是存放action的堆棧,當(dāng)我們提交一個(gè)請求道服務(wù)器端 action時(shí),就有個(gè)堆棧,如果action在服務(wù)器端進(jìn)行跳轉(zhuǎn),所有action共用一個(gè)堆棧,當(dāng)需要保存在action中的數(shù)據(jù)時(shí),首先從棧頂開始 搜索,若找到相同的屬性名(與要獲得的數(shù)據(jù)的屬性名相同)時(shí),即將值取出,但這種情況可能出現(xiàn)找到的值不是我們想要的值,那么解決此問題需要用TOP語法 和N語法來進(jìn)行解決。     當(dāng)在客服端進(jìn)行跳轉(zhuǎn)時(shí),當(dāng)有請求提交到服務(wù)器的action時(shí),只有一個(gè)堆棧存在,堆棧中存放的是當(dāng)前的請求的action,而原來那么則銷毀了(本人觀 點(diǎn),感覺如同request請求一樣)。 ****************************************************** 眾所周知,Strut 2的Action類通過屬性可以獲得所有相關(guān)的值,如請求參數(shù)、Action配置參數(shù)、向其他Action傳遞屬性值(通過chain結(jié)果)等等。要獲得 這些參數(shù)值,我們要做的唯一一件事就是在Action類中聲明與參數(shù)同名的屬性,在Struts 2調(diào)用Action類的Action方法(默認(rèn)是execute方法)之前,就會為相應(yīng)的Action屬性賦值。   要完成這個(gè)功能,有很大程度上,Struts 2要依賴于ValueStack對象。這個(gè)對象貫穿整個(gè)Action的生命周期(每個(gè)Action類的對象實(shí)例會擁有一個(gè)ValueStack對象)。當(dāng) Struts 2接收到一個(gè).action的請求后,會先建立Action類的對象實(shí)例,但并不會調(diào)用Action方法,而是先將Action類的相應(yīng)屬性放到 ValueStack對象的頂層節(jié)點(diǎn)(ValueStack對象相當(dāng)于一個(gè)棧)。只是所有的屬性值都是默認(rèn)的值,如String類型的屬性值為 null,int類型的屬性值為0等。   在處理完上述工作后,Struts 2就會調(diào)用攔截器鏈中的攔截器,當(dāng)調(diào)用完所有的攔截器后,最后會調(diào)用Action類的Action方法,在調(diào)用Action方法之前,會將 ValueStack對象頂層節(jié)點(diǎn)中的屬性值賦給Action類中相應(yīng)的屬性。大家要注意,在這里就給我們帶來了很大的靈活性。也就是說,在Struts 2調(diào)用攔截器的過程中,可以改變ValueStack對象中屬性的值,當(dāng)改變某個(gè)屬性值后,Action類的相應(yīng)屬性值就會變成在攔截器中最后改變該屬性 的這個(gè)值。   從上面的描述很容易知道,在Struts 2的的Action類可以獲得與屬性同名的參數(shù)值就是通過不同的攔截器來處理的,如獲得請求參數(shù)的攔截器是params,獲得Action的配置參數(shù)的攔 截器是staticParams等。在這些攔截器內(nèi)部讀取相應(yīng)的值,并更新ValueStack對象頂層節(jié)點(diǎn)的相應(yīng)屬性的值。而ValueStack對象 就象一個(gè)傳送帶,將屬性值從一個(gè)攔截器傳到了另一個(gè)攔截器(當(dāng)然,在這其間,屬性值可能改變),最后會傳到Action對象,并將ValueStack對 象中的屬性的值終值賦給Action類的相應(yīng)屬性  眾所周知,Strut 2的Action類通過屬性可以獲得所有相關(guān)的值,如請求參數(shù)、Action配置參數(shù)、向其他Action傳遞屬性值(通過chain結(jié)果)等等。要獲得 這些參數(shù)值,我們要做的唯一一件事就是在Action類中聲明與參數(shù)同名的屬性,在Struts 2調(diào)用Action類的Action方法(默認(rèn)是execute方法)之前,就會為相應(yīng)的Action屬性賦值。   要完成這個(gè)功能,有很大程度上,Struts 2要依賴于ValueStack對象。這個(gè)對象貫穿整個(gè)Action的生命周期(每個(gè)Action類的對象實(shí)例會擁有一個(gè)ValueStack對象)。當(dāng) Struts 2接收到一個(gè).action的請求后,會先建立Action類的對象實(shí)例,但并不會調(diào)用Action方法,而是先將Action類的相應(yīng)屬性放到 ValueStack對象的頂層節(jié)點(diǎn)(ValueStack對象相當(dāng)于一個(gè)棧)。只是所有的屬性值都是默認(rèn)的值,如String類型的屬性值為 null,int類型的屬性值為0等。   在處理完上述工作后,Struts 2就會調(diào)用攔截器鏈中的攔截器,當(dāng)調(diào)用完所有的攔截器后,最后會調(diào)用Action類的Action方法,在調(diào)用Action方法之前,會將 ValueStack對象頂層節(jié)點(diǎn)中的屬性值賦給Action類中相應(yīng)的屬性。大家要注意,在這里就給我們帶來了很大的靈活性。也就是說,在Struts 2調(diào)用攔截器的過程中,可以改變ValueStack對象中屬性的值,當(dāng)改變某個(gè)屬性值后,Action類的相應(yīng)屬性值就會變成在攔截器中最后改變該屬性 的這個(gè)值。   從上面的描述很容易知道,在Struts 2的的Action類可以獲得與屬性同名的參數(shù)值就是通過不同的攔截器來處理的,如獲得請求參數(shù)的攔截器是params,獲得Action的配置參數(shù)的攔 截器是staticParams等。在這些攔截器內(nèi)部讀取相應(yīng)的值,并更新ValueStack對象頂層節(jié)點(diǎn)的相應(yīng)屬性的值。而ValueStack對象 就象一個(gè)傳送帶,將屬性值從一個(gè)攔截器傳到了另一個(gè)攔截器(當(dāng)然,在這其間,屬性值可能改變),最后會傳到Action對象,并將ValueStack對 象中的屬性的值終值賦給Action類的相應(yīng)屬性


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐东| 佛坪县| 乌鲁木齐市| 沙湾县| 长武县| 措美县| 定陶县| 通城县| 巍山| 高阳县| 横山县| 布尔津县| 咸宁市| 开封市| 长海县| 赞皇县| 育儿| 米泉市| 札达县| 喀喇| 高密市| 洛南县| 广南县| 永胜县| 林芝县| 清涧县| 伊金霍洛旗| 大石桥市| 万宁市| 会泽县| 邹城市| 镇远县| 秦安县| 洛浦县| 腾冲县| 岫岩| 都江堰市| 家居| 石楼县| 西丰县| 遵化市|