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

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

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

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0
    ?

    我們在Web開發(fā)中,可能經(jīng)常會(huì)從表單中取值,然后封裝成一個(gè)bean的時(shí)候。

    可能你也是這樣做的:

    String?uname?=?(String)request.getParameter("uname");

    String?upass?=?(String)request.getParameter("upass");

    User?u?=?new?User(uname,upass);

    或者

    U.set……

    u.set……

    等等

    如果字段很多的話,可能前面就要很多的各這樣的過程。也許你也會(huì)覺得很是麻煩,又沒有好的辦法。

    我們可以使用反射來實(shí)現(xiàn),也許可以減輕一點(diǎn)您的負(fù)擔(dān)。

    代碼如下:

    User?u?=?new?User();

    ??

    ??Enumeration?m?=?request.getParameterNames();

    ??while(m.hasMoreElements()){

    ???String??pn?=?(String)m.nextElement();

    ???out.println(pn?+?"?---?");

    ???String??pv?=?(String)request.getParameter(pn);

    ???out.println(?pv?+?"<br>");

    ???

    ???Class?c?=?u.getClass();???

    ???out.println("?class?is?:?"?+?c?+?"<br>");

    ???

    ???try?{

    ???????

    ????Field?f?=?c.getField(pn);

    ????

    ????out.println("field?is?:?"?+?f?+?"<br>");

    ????f.set(u,?pv);

    ????

    ????out.println("?user?name?is?:?"?+?u.getUname()?+?"<br>");

    ????out.println("?user?pass?is?:?"?+?u.getUpass()?+?"<br>");

    ????

    ???}?catch?(SecurityException?e)?{

    ????//?TODO?Auto-generated?catch?block

    ????e.printStackTrace();

    ???}?catch?(NoSuchFieldException?e)?{

    ????//?TODO?Auto-generated?catch?block

    ????e.printStackTrace();

    ???}?catch?(IllegalArgumentException?e)?{

    ????//?TODO?Auto-generated?catch?block

    ????e.printStackTrace();

    ???}?catch?(IllegalAccessException?e)?{

    ????//?TODO?Auto-generated?catch?block

    ????e.printStackTrace();

    ???}

    ??}

    ??我們也可以把這個(gè)部分封裝起來成一個(gè)類,實(shí)現(xiàn)從request到一個(gè)bean的注入。

    上面的方法有一個(gè)缺點(diǎn),由于我們使用的Field來實(shí)現(xiàn)的,所以,能取得的字段一定要聲明成public,如果是private的,就不能取到了。

    測試結(jié)果如下:

    uname?---?zywewqeqwe

    class?is?:?class?org.zy.demo.sd.bean.User

    private?field?is?:?private?java.lang.String?org.zy.demo.sd.bean.User.uname

    upass?---?zywqeqweqweqw

    class?is?:?class?org.zy.demo.sd.bean.User

    private?field?is?:?private?java.lang.String?org.zy.demo.sd.bean.User.upass

    解決上面的問題,我們可以使用另外一個(gè)方法:

    ?

    ????Field?f?=?c.getDeclaredField(pn);

    ????out.println("?private?field?is?:?"?+?f?+?"<br>");

    就這一個(gè)方法的不同就可以實(shí)現(xiàn)和上面的不同的結(jié)果,上面的

    ?Field?f?=?c.getField(pn);

    可以能取public的字段,但是

    getDeclaredField(pn);

    同時(shí)可以取到private字段的值。

    注意:

    上面的功能要能實(shí)現(xiàn),要保證form的字段和bean定義的字段的完全一致。

    希望自己的一點(diǎn)小小的體會(huì)能對(duì)您起到一點(diǎn)幫助作用。



    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請(qǐng)注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2007-09-21 18:08 zhyiwww 閱讀(1200) 評(píng)論(2)  編輯  收藏 所屬分類: j2ee

    FeedBack:
    # re: Web開發(fā)中使用反射為Bean賦值
    2007-09-22 00:05 | 千里冰封
    反射用得好的話,是很靈活的  回復(fù)  更多評(píng)論
      
    # re: Web開發(fā)中使用反射為Bean賦值
    2007-09-22 07:28 | sitinspring
    文章不錯(cuò),格式可以稍微調(diào)整一下.  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 成年大片免费视频| 一级白嫩美女毛片免费| 久久午夜夜伦鲁鲁片免费无码影视| 久久国产高潮流白浆免费观看| 亚洲色WWW成人永久网址| CAOPORM国产精品视频免费| 国产成人亚洲精品影院| 国产免费人成视频尤勿视频| 国产亚洲美女精品久久久| 久久久WWW免费人成精品| 亚洲大尺度无码专区尤物| 久草免费手机视频| 亚洲色偷偷偷网站色偷一区| 无人在线直播免费观看| 亚洲日韩乱码中文字幕| 免费jjzz在在线播放国产| xxxxx做受大片视频免费| 久久精品国产亚洲AV麻豆王友容| 国产免费拔擦拔擦8X高清在线人| 亚洲国产精品久久久天堂| 巨波霸乳在线永久免费视频| 亚洲乱妇老熟女爽到高潮的片| 日本一道综合久久aⅴ免费| 人成免费在线视频| 亚洲AV无码专区国产乱码电影| 99视频精品全部免费观看| 亚洲一级片在线观看| 国产精品无码素人福利免费| 成人毛片100免费观看| 亚洲首页在线观看| 日韩成全视频观看免费观看高清| 国产亚洲视频在线观看网址| 亚洲av无码一区二区乱子伦as| 亚洲w码欧洲s码免费| 国产精品亚洲综合一区在线观看| 亚洲色一色噜一噜噜噜| 一区二区三区福利视频免费观看| 亚洲网站视频在线观看| 免费人成在线观看播放国产 | 222www免费视频| 亚洲日韩乱码中文字幕|