关闭顶部展开顶部

如何实现javabean的属性拷贝_JSP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:JSF和Struts框架的错误控制与封装处理
在struts中,通常采用的全局错误控制模式是构建一个baseAction,在其execute方法中完成前台传回方法的dispatch操作,并由 try……catch……捕获程序错误,实现错误的控制和展示。一个典型的B

在struts的实践过程中,经常两个javabean交换数据的情况,如ActionForm与数据库中的表相关的bean交换数据。通常情况下要写很多get和set语句,一个个属性依次拷贝。这样的话,如此重复繁重的工作让程序员感觉不到编程的快乐。于是在网上查相关资料知,在apache.org有一个project:common-beanutil,提供的一个BeanUtil类,这个类有一个静态方法BeanUtil.copyProperties()实现了该功能。后来我在与java相关的书上知道的java的反射机制(reflect),偿试着并实现了两个javabean的属性拷贝功能。

import java.lang.reflect.*;
public class BeanUtil2{
/**
@parameter Object obj1,Object obj2
@return Object
用到反射机制
此方法将调用obj1的getter方法,将得到的值作为相应的参数传给obj2的setter方法
注意,obj1的getter方法和obj2方法必须是public类型
*/
public static Object CopyBeanToBean(Object obj1,Object obj2) throws Exception{
Method[] method1=obj1.getClass().getMethods();
Method[] method2=obj2.getClass().getMethods();
String methodName1;
String methodFix1;
String methodName2;
String methodFix2;
for(int i=0;i methodName1=method1[i].getName();
methodFix1=methodName1.substring(3,methodName1.length());
if(methodName1.startsWith("get")){
for(int j=0;j methodName2=method2[j].getName();
methodFix2=methodName2.substring(3,methodName2.length());
if(methodName2.startsWith("set")){
if(methodFix2.equals(methodFix1)){
Object[] objs1=new Object[0];
Object[] objs2=new Object[1];
objs2[0]=method1[i].invoke(obj1,objs1);
/**
激活obj1的相应的get的方法,objs1数组存放调用该方法的参数,
此例中没有参数,该数组的长度为0
*/
method2[j].invoke(obj2,objs2);
//激活obj2的相应的set的方法,objs2数组存放调用该方法的参数
continue;
}
}
}
}
}
return obj2;
}
}
再建一个javabean,并测试

import java.lang.reflect.*;
public class User {
private String name;
private String id;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setId(String id){
this.id=id;
}
public String getId(){
return this.id;
}
public static void main(String[] args) throws Exception{
User u1=new User();
u1.setName("zxb");
u1.setId("3286");
User u2=new User();
u2=(User)BeanUtil2.CopyBeanToBean(u1,u2);
System.out.println(u2.getName());
System.out.println(u2.getId());
}
}
编译后并执行输出结果

zxb

3286

成功!

分享:介绍JSP中request属性的用法
一、request.getParameter() 和request.getAttribute() 区别 (1)request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAt

来源:模板无忧//所属分类:JSP教程/更新时间:2008-08-22
loading.. 评论加载中....
相关JSP教程
闂佹眹鍩勯崹閬嶆偤閺囶澁缍栭柛鈩冪⊕閳锋帗銇勯弴妤€浜惧銈忕秶閹凤拷
濠电偛顕慨顓㈠磻閹炬枼妲堥柡鍌濇硶婢ф稒淇婇懠顒夆偓婵嬫煟閵忊晛鐏查柟鍑ゆ嫹
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓兼径瀣閻庣懓瀚竟鍡欐崲娑斾線鏌i姀鈺佺伈闁瑰嚖鎷�
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓兼径濠勵吋闂佽鍨庨崟顓фК闂佽閰eḿ褍螞濞戙垺鍋夐柨鐕傛嫹
闂備胶枪缁绘劙骞婃惔銊ョ劦妞ゆ帒鍊哥敮鍫曞箹鐎涙ḿ鐭掔€规洘绻堥弫鎾绘晸閿燂拷
闂備胶枪缁绘劙骞婃惔銊ョ劦妞ゆ巻鍋撻柛姘儑缁﹪鏁傞崜褏鐓撻柣搴岛閺呮繈鎯屽▎鎴犵=濞撴艾锕ョ€氾拷
闂備浇銆€閸嬫挻銇勯弽銊р槈闁伙富鍣i弻娑樷攽閹邦亞鑳虹紓浣靛妽濡炶棄顕i妸鈺婃晬婵炲棙鍨电粭锟犳⒑閸濆嫬鈧骞婇幘鑸殿潟闁跨噦鎷�
闂備礁鎼崯鐗堟叏妞嬪海绀婂鑸靛姈閻擄綁鎮规潪鎷岊劅婵炲眰鍊曢湁闁挎繂妫欑粈鈧梺鍛娚戦悧鐘茬暦閹扮増鏅搁柨鐕傛嫹
婵犵妲呴崹顏堝礈濠靛棭鐔嗘俊顖氬悑鐎氱粯銇勯幘瀵哥畺閻庢熬鎷�
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓奸崶銊ヮ伕濡炪倖鎸荤换鍐偓姘虫珪娣囧﹪顢涘Δ鈧晶鍙夌節椤喗瀚�
婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾鐎规洦鍓熼、娆撳礂閻撳簶鍋撻悽鍛婄厸闁割偅绻勫瓭婵犳鍣幏锟�
婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾闁哄苯鎳橀崺鈧い鎺嗗亾闁宠閰i獮鎴﹀箛闂堟稒顔嗛梻浣告惈鐎氭悂骞忛敓锟�
婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾鐎规洩缍侀獮瀣攽閸偂绱�
濠电姷顣介埀顒€鍟块埀顒勵棑缁辩偛顓兼径濠勭厬闂佺懓鐡ㄧ换鍕敂鐎涙ü绻嗘い鏍殔婢у弶绻濋~顔藉
闂佽楠搁崢婊堝礈濠靛鍋嬮柟鎯版閻鈹戦悩鎻掓殭闁奸潧缍婇弻銈夋嚍閵夈儱顫嶉梺缁樼壄缂嶄礁鐣峰▎鎾存櫢闁跨噦鎷�
UB闂備礁婀辩划顖炲礉濡ゅ懐宓侀柛銉㈡櫆鐎氭岸鎮楀☉娅虫垿锝為敓锟�
闂備浇澹堟ご绋款潖婵犳碍鐒鹃悗鐢电《閸嬫捇鐛崹顔句痪濠电姭鍋撻柨鐕傛嫹
闂佽楠哥粻宥夊垂閸濆嫸鑰块柛銏㈠殰
闂備礁鎲″缁樻叏妞嬪海绀婂璺虹灱閸楁碍绻涢崱妤€顒㈤柛鐐差槹缁绘稓绱欓悩鍝勫帯闂佺ǹ楠忛幏锟�
缂傚倸鍊烽悞锕傛偡閿曞倸鍨傛繝濠傚椤╅攱銇勯幒宥囶槮缂佹彃婀遍埀顒傚仯閸婃繄绱撳棰濇晩闁跨噦鎷�
©2017 www.mb5u.com婵犵妲呴崹顏堝礈濠靛棭鐔嗘慨妞诲亾鐎殿噮鍣i幃鈺呭箵閹烘挸鐦�
闂備浇銆€閸嬫捇鏌熼婊冾暭妞ゃ儻鎷�&闂備礁鎲$敮鎺懳涢弮鍫燁棅闁跨噦鎷�