<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 28,  comments - 15,  trackbacks - 0

    DynaBean 的使用

    ?????? 在正常的開發(fā)的過程中,我們時常會遇到這樣的問題, JavaBean 的屬性是不確定的、動態(tài)的,其屬性的確定是由邏輯控制來處理的。比如這樣的一種情況,有一組基本報(bào)表信息需要 JavaBean 來描述,這組報(bào)表在結(jié)構(gòu)上具有很大的相似性,如果你不想為每一份基本報(bào)表都創(chuàng)建一個 JavaBean ,那么接下來為你介紹一種為 JavaBean 動態(tài)創(chuàng)建屬性的方法。

    1.?? DynaBean 的創(chuàng)建

    ?????? 為了描述的便利,我們虛擬一個簡單的需求環(huán)境,就以上面提到的描述一組基本報(bào)表信息為例吧,我們假設(shè)基本報(bào)表的名稱為 basicReport ,每一份基本報(bào)表都包含 3 個屬性 id name rowNo( 行號 ) 。在下面我們將使用 org.apache.commons.beanutils 包提供為我們的一些接口和類來處理上面提到的需求。

    1.1. DynaBean and DynaClass

    DynaBean DynaClass beanutils 包實(shí)現(xiàn) DynaBean 最基本、最常用的接口。對于 DynaBean DynaClass 你可以這樣理解, DanyBean 提供了可以動態(tài)修改實(shí)現(xiàn)他的類的屬性名稱、屬性值、屬性類型的功能;而 DynaClass 負(fù)責(zé)為一個或者多個實(shí)現(xiàn)了 DanyBean 接口的對象提供屬性的功能, DynaClass 提供的屬性正是我們動態(tài)創(chuàng)建的那些屬性參考 。如果你不理解,在下一節(jié) BasicDynaBean and BasicDynaClass 我們以實(shí)例展示。

    關(guān)于 DynaBean DynaClass 的詳細(xì)描述,參見 DynaBean DynaClass

    1.2. BasicDynaBean and BasicDynaClass

    BasicDynaBean BasicDynaClass 分別實(shí)現(xiàn)了 DynaBean DynaClass 接口, BasicDynaBean BasicDynaClass 實(shí)現(xiàn)了提供一組基本的屬性的能力,這組屬性是由你動態(tài)定義的,而且這組屬性中的成員應(yīng)該是 DynaProperty 類的實(shí)例。首先,你要為 DynaClass 創(chuàng)建你所關(guān)心的一組屬性,代碼如下: ?

    示例代碼:

    ?????? ??? DynaProperty[] props = new DynaProperty[]

    {

    ?????? ??????????? new DynaProperty("id",String.class),

    ?????? ??????????? new DynaProperty("name", String.class),

    ?????? ??????????? new DynaProperty("rowNo", int.class),

    ?????? ??????????? new DynaProperty("c1",? long.class),

    ?????? ??????????? new DynaProperty("c2",long.class),

    ?????? ??????????? new DynaProperty("c3",long.class)

    ?????? ??? };

    BasicDynaClass dynaClass = new BasicDynaClass("basicReport", null, props);

    ?

    ?

    ?

    ??????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ??????

    說明: ?????????????????????????????????????????????????????????????????

    ?????? BasicDynaClass 一共提供了3個構(gòu)造函數(shù),我這里強(qiáng)調(diào)的只有一點(diǎn),對于參數(shù)dynaBeanClass的一個說明。在上面的代碼中,我們指定要創(chuàng)建一個名稱為“ basicReport ”的DynaBean,dynaBeanClass參數(shù)說明的是你希望系統(tǒng)為你創(chuàng)建的DynaBean的類型是什么,如果為null的話,系統(tǒng)就認(rèn)為你要創(chuàng)建的是BasicDynaBean類型的DynaBean實(shí)例。如果你希望用其他類型代替null的話,那么指定的類應(yīng)該實(shí)現(xiàn)了DynaClass接口,否則就會拋出IllegalArgumentException 異常 ????????????????????????????????????????????????????????????????????????????????????????????????????????????

    ?

    ?

    ????????????????????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    ?????? 在上面的代碼中,我們假設(shè)為 basicReport 創(chuàng)建了 6 個屬性,同時告訴了 BasicDynaClass ,我們需要創(chuàng)建一個名稱為 basicReport 的報(bào)表, basicReport 的類型我們采用默認(rèn)的 BasicDynaBean 。接下來,我們由 dynaClass 對象為我們實(shí)例化我們設(shè)置的這個動態(tài)對象,參考代碼如下:

    ? ??????

    示例代碼:

    ????????????? DynaBean basicReport = dynaClass.newInstance();

    ?????? ??? basicReport.set("id","124578");

    ?????? ??? basicReport.set("name"," 在校生數(shù) ");

    ?????? ??? basicReport.set("rowNo",new Integer(1));

    ?????? ??? basicReport.set("c1",new Long(125));

    ?????? ??? basicReport.set("c2",new Long(125));

    ?????? ??? basicReport.set("c3",new Long(125));

    ?????????????

    ????????????? String id = (String)basicReport.get(“id”);

    ????????????? String name = (String) basicReport.get("name");

    ?????? ??? int rowNo = ((Integer)basicReport.get("rowNo")).intValue();

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    ??????? ?

    在上面的代碼中我們完成了 DynaBean 的實(shí)例化 (basicReport) ,并且對實(shí)例化的 basicReport 進(jìn)行了設(shè)置和獲取的操作。

    關(guān)于 DynaBean 還有其他形式的應(yīng)用,像 ResultSetDynaClass LazyDynaBean 等分別描述了如何處理數(shù)據(jù)庫檢索結(jié)果集的 DynaBean 處理、以及簡略 DynaProperties 處理的 LazyDynaBean 的處理方式,這些都能極大地簡化開發(fā)過程中 JavaBean 的處理,要了解更多請參考 http://jakarta.apache.org/commons/beanutils/api/index.html

    上面講述的常常是在邏輯處理時碰到的,那么在 Struts 框架下動態(tài)的頁面的顯示以及提交是否也有這方面的處理呢?答案是肯定的。

    DynaBean 的使用

    ?????? 在正常的開發(fā)的過程中,我們時常會遇到這樣的問題, JavaBean 的屬性是不確定的、動態(tài)的,其屬性的確定是由邏輯控制來處理的。比如這樣的一種情況,有一組基本報(bào)表信息需要 JavaBean 來描述,這組報(bào)表在結(jié)構(gòu)上具有很大的相似性,如果你不想為每一份基本報(bào)表都創(chuàng)建一個 JavaBean ,那么接下來為你介紹一種為 JavaBean 動態(tài)創(chuàng)建屬性的方法。

    1.?? DynaBean 的創(chuàng)建

    ?????? 為了描述的便利,我們虛擬一個簡單的需求環(huán)境,就以上面提到的描述一組基本報(bào)表信息為例吧,我們假設(shè)基本報(bào)表的名稱為 basicReport ,每一份基本報(bào)表都包含 3 個屬性 id name rowNo( 行號 ) 。在下面我們將使用 org.apache.commons.beanutils 包提供為我們的一些接口和類來處理上面提到的需求。

    1.1. DynaBean and DynaClass

    DynaBean DynaClass beanutils 包實(shí)現(xiàn) DynaBean 最基本、最常用的接口。對于 DynaBean DynaClass 你可以這樣理解, DanyBean 提供了可以動態(tài)修改實(shí)現(xiàn)他的類的屬性名稱、屬性值、屬性類型的功能;而 DynaClass 負(fù)責(zé)為一個或者多個實(shí)現(xiàn)了 DanyBean 接口的對象提供屬性的功能, DynaClass 提供的屬性正是我們動態(tài)創(chuàng)建的那些屬性參考 。如果你不理解,在下一節(jié) BasicDynaBean and BasicDynaClass 我們以實(shí)例展示。

    關(guān)于 DynaBean DynaClass 的詳細(xì)描述,參見 DynaBean DynaClass

    1.2. BasicDynaBean and BasicDynaClass

    BasicDynaBean BasicDynaClass 分別實(shí)現(xiàn)了 DynaBean DynaClass 接口, BasicDynaBean BasicDynaClass 實(shí)現(xiàn)了提供一組基本的屬性的能力,這組屬性是由你動態(tài)定義的,而且這組屬性中的成員應(yīng)該是 DynaProperty 類的實(shí)例。首先,你要為 DynaClass 創(chuàng)建你所關(guān)心的一組屬性,代碼如下:

    ?

    ?

    示例代碼:

    ?????? ??? DynaProperty[] props = new DynaProperty[]

    {

    ?????? ??????????? new DynaProperty("id",String.class),

    ?????? ??????????? new DynaProperty("name", String.class),

    ?????? ??????????? new DynaProperty("rowNo", int.class),

    ?????? ??????????? new DynaProperty("c1",? long.class),

    ?????? ??????????? new DynaProperty("c2",long.class),

    ?????? ??????????? new DynaProperty("c3",long.class)

    ?????? ??? };

    BasicDynaClass dynaClass = new BasicDynaClass("basicReport", null, props);

    ?

    ?

    ?

    ??????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ??????

    說明: ?????????????????????????????????????????????????????????????????

    ?????? BasicDynaClass 一共提供了3個構(gòu)造函數(shù),我這里強(qiáng)調(diào)的只有一點(diǎn),對于參數(shù)dynaBeanClass的一個說明。在上面的代碼中,我們指定要創(chuàng)建一個名稱為“ basicReport ”的DynaBean,dynaBeanClass參數(shù)說明的是你希望系統(tǒng)為你創(chuàng)建的DynaBean的類型是什么,如果為null的話,系統(tǒng)就認(rèn)為你要創(chuàng)建的是BasicDynaBean類型的DynaBean實(shí)例。如果你希望用其他類型代替null的話,那么指定的類應(yīng)該實(shí)現(xiàn)了DynaClass接口,否則就會拋出IllegalArgumentException 異常 ????????????????????????????????????????????????????????????????????????????????????????????????????????????

    ?

    ?

    ????????????????????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    ?????? 在上面的代碼中,我們假設(shè)為 basicReport 創(chuàng)建了 6 個屬性,同時告訴了 BasicDynaClass ,我們需要創(chuàng)建一個名稱為 basicReport 的報(bào)表, basicReport 的類型我們采用默認(rèn)的 BasicDynaBean 。接下來,我們由 dynaClass 對象為我們實(shí)例化我們設(shè)置的這個動態(tài)對象,參考代碼如下:

    ? ??????

    示例代碼:

    ????????????? DynaBean basicReport = dynaClass.newInstance();

    ?????? ??? basicReport.set("id","124578");

    ?????? ??? basicReport.set("name"," 在校生數(shù) ");

    ?????? ??? basicReport.set("rowNo",new Integer(1));

    ?????? ??? basicReport.set("c1",new Long(125));

    ?????? ??? basicReport.set("c2",new Long(125));

    ?????? ??? basicReport.set("c3",new Long(125));

    ?????????????

    ????????????? String id = (String)basicReport.get(“id”);

    ????????????? String name = (String) basicReport.get("name");

    ?????? ??? int rowNo = ((Integer)basicReport.get("rowNo")).intValue();

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    ??????

    ?

    ?

    ?

    在上面的代碼中我們完成了 DynaBean 的實(shí)例化 (basicReport) ,并且對實(shí)例化的 basicReport 進(jìn)行了設(shè)置和獲取的操作。

    關(guān)于 DynaBean 還有其他形式的應(yīng)用,像 ResultSetDynaClass LazyDynaBean 等分別描述了如何處理數(shù)據(jù)庫檢索結(jié)果集的 DynaBean 處理、以及簡略 DynaProperties 處理的 LazyDynaBean 的處理方式,這些都能極大地簡化開發(fā)過程中 JavaBean 的處理,要了解更多請參考 http://jakarta.apache.org/commons/beanutils/api/index.html

    上面講述的常常是在邏輯處理時碰到的,那么在 Struts 框架下動態(tài)的頁面的顯示以及提交是否也有這方面的處理呢?答案是肯定的。

    posted on 2006-10-17 18:12 zhangxl 閱讀(448) 評論(0)  編輯  收藏 所屬分類: common

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類(17)

    隨筆檔案(28)

    文章分類(30)

    文章檔案(30)

    相冊

    收藏夾(2)

    hibernate

    java基礎(chǔ)

    mysql

    xml

    關(guān)注

    壓力測試

    算法

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 96299
    • 排名 - 601

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 男人免费视频一区二区在线观看| 亚洲av无码专区青青草原| 亚洲日产2021三区| 成年午夜视频免费观看视频| 成人毛片18女人毛片免费96| 成人亚洲网站www在线观看| 24小时免费直播在线观看| 日本免费一区二区三区最新 | 免费精品国产自产拍在| 日韩a级毛片免费观看| 国产亚洲精品福利在线无卡一| 免费一级做a爰片久久毛片潮喷| 看全色黄大色大片免费久久| 无码中文字幕av免费放| 亚洲国产精品一区二区三区久久 | 亚洲色少妇熟女11p| 亚洲熟妇AV乱码在线观看| 日本一区二区在线免费观看| 日韩电影免费在线观看| 久操免费在线观看| 成熟女人特级毛片www免费| 中文亚洲AV片在线观看不卡| 中中文字幕亚洲无线码| 又大又硬又粗又黄的视频免费看| 99久久人妻精品免费二区| 永久在线毛片免费观看| 亚洲大尺度无码无码专区| 亚洲乱码在线观看| 麻豆亚洲AV成人无码久久精品 | 亚洲人成电影青青在线播放| 色视频在线观看免费| 84pao强力永久免费高清| 国产91色综合久久免费| 亚洲AV无码一区二区三区在线观看 | 久久精品无码一区二区三区免费| 久久亚洲国产成人精品无码区| 亚洲国产精品乱码一区二区| 亚洲精品伦理熟女国产一区二区 | 99久久免费精品视频| 亚洲高清成人一区二区三区| 亚洲大片免费观看|