麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

Struts2中valuestack

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

通過對struts2的一段時間的接觸,將自己對OGNL的核心值棧說說,值棧:簡單的說,就是存放action的堆棧,當(dāng)我們提交一個請求道服務(wù)器端 action時,就有個堆棧,如果action在服務(wù)器端進(jìn)行跳轉(zhuǎn),所有action共用一個堆棧,當(dāng)需要保存在action中的數(shù)據(jù)時,首先從棧頂開始 搜索,若找到相同的屬性名(與要獲得的數(shù)據(jù)的屬性名相同)時,即將值取出,但這種情況可能出現(xiàn)找到的值不是我們想要的值,那么解決此問題需要用TOP語法 和N語法來進(jìn)行解決。     當(dāng)在客服端進(jìn)行跳轉(zhuǎn)時,當(dāng)有請求提交到服務(wù)器的action時,只有一個堆棧存在,堆棧中存放的是當(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屬性賦值。   要完成這個功能,有很大程度上,Struts 2要依賴于ValueStack對象。這個對象貫穿整個Action的生命周期(每個Action類的對象實例會擁有一個ValueStack對象)。當(dāng) Struts 2接收到一個.action的請求后,會先建立Action類的對象實例,但并不會調(diào)用Action方法,而是先將Action類的相應(yīng)屬性放到 ValueStack對象的頂層節(jié)點(diǎn)(ValueStack對象相當(dāng)于一個棧)。只是所有的屬性值都是默認(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)改變某個屬性值后,Action類的相應(yīng)屬性值就會變成在攔截器中最后改變該屬性 的這個值。   從上面的描述很容易知道,在Struts 2的的Action類可以獲得與屬性同名的參數(shù)值就是通過不同的攔截器來處理的,如獲得請求參數(shù)的攔截器是params,獲得Action的配置參數(shù)的攔 截器是staticParams等。在這些攔截器內(nèi)部讀取相應(yīng)的值,并更新ValueStack對象頂層節(jié)點(diǎn)的相應(yīng)屬性的值。而ValueStack對象 就象一個傳送帶,將屬性值從一個攔截器傳到了另一個攔截器(當(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屬性賦值。   要完成這個功能,有很大程度上,Struts 2要依賴于ValueStack對象。這個對象貫穿整個Action的生命周期(每個Action類的對象實例會擁有一個ValueStack對象)。當(dāng) Struts 2接收到一個.action的請求后,會先建立Action類的對象實例,但并不會調(diào)用Action方法,而是先將Action類的相應(yīng)屬性放到 ValueStack對象的頂層節(jié)點(diǎn)(ValueStack對象相當(dāng)于一個棧)。只是所有的屬性值都是默認(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)改變某個屬性值后,Action類的相應(yīng)屬性值就會變成在攔截器中最后改變該屬性 的這個值。   從上面的描述很容易知道,在Struts 2的的Action類可以獲得與屬性同名的參數(shù)值就是通過不同的攔截器來處理的,如獲得請求參數(shù)的攔截器是params,獲得Action的配置參數(shù)的攔 截器是staticParams等。在這些攔截器內(nèi)部讀取相應(yīng)的值,并更新ValueStack對象頂層節(jié)點(diǎn)的相應(yīng)屬性的值。而ValueStack對象 就象一個傳送帶,將屬性值從一個攔截器傳到了另一個攔截器(當(dāng)然,在這其間,屬性值可能改變),最后會傳到Action對象,并將ValueStack對 象中的屬性的值終值賦給Action類的相應(yīng)屬性


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品99久久久久久久女警 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 黄网站色成年大片免费高 | 精品一区二区三区在线观看视频 | 黄色淫片| 免费一级在线视频 | 亚洲欧美成aⅴ人在线观看 免费看欧美黑人毛片 | 久久久久99一区二区三区 | 黄色三级网站 | 免费观看一级黄色片 | 国产韩国精品一区二区三区久久 | 看免费黄色大片 | 国产日韩精品欧美一区视频 | 精品中文字幕久久久久四十五十骆 | 国产精品视频久久久 | 嗯哈~不行好大h双性 | 久久久成人精品视频 | 欧美一级美国一级 | 久久区二区| 在线成人一区 | 四虎久草 | 一色屋任你操 | 欧美视频在线一区二区三区 | 国产欧美亚洲精品a | 九九热视频这里只有精品 | 国产午夜精品一区二区三区免费 | 久久精品一级 | 性片网站 | 欧美成人精品一区 | 午夜视频在线看 | 国产精品久久久久久久久久10秀 | 亚洲第一激情 | 国产精品一区二区免费在线观看 | 国产一区精品在线观看 | 精品国产一区二区久久 | 中文字幕在线不卡视频 | 欧洲精品色 | 精品国产一区二区三区成人影院 | 97精品视频在线观看 | 日韩区在线 | 斗破苍穹在线免费 |