国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 泸定县| 金塔县| 米林县| 金阳县| 杭锦后旗| 诸城市| 宜兰县| 南江县| 修水县| 阿城市| 饶阳县| 宜黄县| 浮梁县| 东源县| 家居| 澎湖县| 柘荣县| 宜良县| 安多县| 义乌市| 当涂县| 睢宁县| 乌审旗| 阿克陶县| 获嘉县| 张家界市| 东乌珠穆沁旗| 泾源县| 乡宁县| 儋州市| 三都| 永年县| 扬州市| 长春市| 盖州市| 沁水县| 黔东| 金平| 偏关县| 景宁| 栾城县|