一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

struts2值棧 ognl

 J_Tree 2010-08-08

眾所周知,Strut 2的Action類通過屬性可以獲得所有相關的值,如請求參數(shù)、Action

配置參數(shù)、向其他Action傳遞屬性值(通過chain結果)等等。要獲得這些參數(shù)值,我

們要做的唯一一件事就是在Action類中聲明與參數(shù)同名的屬性,在Struts 2調用Action

類的Action方法(默認是execute方法)之前,就會為相應的Action屬性賦值。

  要完成這個功能,有很大程度上,Struts 2要依賴于ValueStack對象。這個對象貫

穿整個Action的生命周期(每個Action類的對象實例會擁有一個ValueStack對象)。當

Struts 2接收到一個.action的請求后,會先建立Action類的對象實例,但并不會調用

Action方法,而是先將Action類的相應屬性放到ValueStack對象的頂層節(jié)點

(ValueStack對象相當于一個棧)。只是所有的屬性值都是默認的值,如String類型的

屬性值為null,int類型的屬性值為0等。

  在處理完上述工作后,Struts 2就會調用攔截器鏈中的攔截器,當調用完所有的攔

截器后,最后會調用Action類的Action方法,在調用Action方法之前,會將ValueStack

對象頂層節(jié)點中的屬性值賦給Action類中相應的屬性。大家要注意,在這里就給我們帶

來了很大的靈活性。也就是說,在Struts 2調用攔截器的過程中,可以改變ValueStack

對象中屬性的值,當改變某個屬性值后,Action類的相應屬性值就會變成在攔截器中最

后改變該屬性的這個值。

  從上面的描述很容易知道,在Struts 2的的Action類可以獲得與屬性同名的參數(shù)值

就是通過不同的攔截器來處理的,如獲得請求參數(shù)的攔截器是params,獲得Action的配

置參數(shù)的攔截器是staticParams等。在這些攔截器內部讀取相應的值,并更新

ValueStack對象頂層節(jié)點的相應屬性的值。而ValueStack對象就象一個傳送帶,將屬性

值從一個攔截器傳到了另一個攔截器(當然,在這其間,屬性值可能改變),最后會傳

到Action對象,并將ValueStack對象中的屬性的值終值賦給Action類的相應屬性


無意中發(fā)現(xiàn),屬性沒有寫set get 方法,依然會注入值和取到值.

甚是不解,求助于網(wǎng)上依然沒有得到解決!

花了點時間看了下源碼!

發(fā)現(xiàn):

struts2 參數(shù)攔載器在注入值的時候,有兩種機制,(調用ognl)

這是OgnlRuntime 類中一段源碼 hasSetMethod( context, target, targetClass,

name ) || hasField( context, target, targetClass, name );

他會先查看你的action 中有沒有對應的方法,如果發(fā)現(xiàn)無此方法,他會利用第二種方法

直接給屬性覆值,而無需對應的set方法!(當然都是通過反射機制實現(xiàn)的)

如果action 中屬性過多的話,我覺得就不用寫set get 方法了!(不知道這個會不會給以

后維護帶來問題).

 

 

個人總結:OGNL中的值棧相當于一個數(shù)據(jù)的中轉站,或者叫數(shù)據(jù)的緩沖存儲中心。另外,OGNL除了有值棧(VS)這個特別的對象外,它的表達式語言也自成一派。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    午夜国产成人福利视频| 91麻豆精品欧美一区| 久久本道综合色狠狠五月| 神马午夜福利一区二区| 男生和女生哪个更好色| 国产欧美一区二区三区精品视| 亚洲一区二区三区有码| 亚洲熟妇熟女久久精品| 丝袜av一区二区三区四区五区| 五月激情婷婷丁香六月网| 欧美精品一区久久精品| 国产乱淫av一区二区三区| 黄片美女在线免费观看| 国产午夜免费在线视频| 中国一区二区三区不卡| 午夜午夜精品一区二区| 黄片三级免费在线观看| 久久中文字人妻熟女小妇| 精品国产日韩一区三区| 精产国品一二三区麻豆| 亚洲男人的天堂久久a| 日本理论片午夜在线观看| 日本不卡在线视频你懂的| 国产又粗又硬又大又爽的视频 | 欧美日韩在线观看自拍| 91免费精品国自产拍偷拍| 可以在线看的欧美黄片| 国产激情一区二区三区不卡| 91麻豆精品欧美一区| 国产av天堂一区二区三区粉嫩| 99久久国产精品成人观看| 国产一区二区三区成人精品| 亚洲精品国男人在线视频| 国产在线视频好看不卡| 狠狠亚洲丁香综合久久| 亚洲欧美日本国产不卡| 九九九热视频最新在线| 美女激情免费在线观看| 欧洲亚洲精品自拍偷拍| 深夜福利亚洲高清性感| 开心激情网 激情五月天|