如何實(shí)現(xiàn)javabean的屬性拷貝_JSP教程
推薦:JSF和Struts框架的錯(cuò)誤控制與封裝處理在struts中,通常采用的全局錯(cuò)誤控制模式是構(gòu)建一個(gè)baseAction,在其execute方法中完成前臺(tái)傳回方法的dispatch操作,并由 try……catch……捕獲程序錯(cuò)誤,實(shí)現(xiàn)錯(cuò)誤的控制和展示。一個(gè)典型的B
在struts的實(shí)踐過程中,經(jīng)常兩個(gè)javabean交換數(shù)據(jù)的情況,如ActionForm與數(shù)據(jù)庫中的表相關(guān)的bean交換數(shù)據(jù)。通常情況下要寫很多get和set語句,一個(gè)個(gè)屬性依次拷貝。這樣的話,如此重復(fù)繁重的工作讓程序員感覺不到編程的快樂。于是在網(wǎng)上查相關(guān)資料知,在apache.org有一個(gè)project:common-beanutil,提供的一個(gè)BeanUtil類,這個(gè)類有一個(gè)靜態(tài)方法BeanUtil.copyProperties()實(shí)現(xiàn)了該功能。后來我在與java相關(guān)的書上知道的java的反射機(jī)制(reflect),償試著并實(shí)現(xiàn)了兩個(gè)javabean的屬性拷貝功能。
import java.lang.reflect.*;
public class BeanUtil2{
/**
@parameter Object obj1,Object obj2
@return Object
用到反射機(jī)制
此方法將調(diào)用obj1的getter方法,將得到的值作為相應(yīng)的參數(shù)傳給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
methodFix1=methodName1.substring(3,methodName1.length());
if(methodName1.startsWith("get")){
for(int j=0;j
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的相應(yīng)的get的方法,objs1數(shù)組存放調(diào)用該方法的參數(shù),
此例中沒有參數(shù),該數(shù)組的長度為0
*/
method2[j].invoke(obj2,objs2);
//激活obj2的相應(yīng)的set的方法,objs2數(shù)組存放調(diào)用該方法的參數(shù)
continue;
}
}
}
}
}
return obj2;
}
}
再建一個(gè)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());
}
}
編譯后并執(zhí)行輸出結(jié)果
zxb
3286
成功!
分享:介紹JSP中request屬性的用法一、request.getParameter() 和request.getAttribute() 區(qū)別 (1)request.getParameter()取得是通過容器的實(shí)現(xiàn)來取得通過類似post,get等方式傳入的數(shù)據(jù),request.setAttribute()和getAt
- jsp response.sendRedirect不跳轉(zhuǎn)的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復(fù)習(xí)整理
- JSP腳本元素和注釋復(fù)習(xí)總結(jié)示例
- JSP FusionCharts Free顯示圖表 具體實(shí)現(xiàn)
- 網(wǎng)頁模板:關(guān)于jsp頁面使用jstl的異常分析
- JSP頁面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項(xiàng)目中連接Access數(shù)據(jù)庫的配置方法
- JDBC連接Access數(shù)據(jù)庫的幾種方式介紹
- 網(wǎng)站圖片路徑的問題:絕對(duì)路徑/虛擬路徑
- (jsp/html)網(wǎng)頁上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對(duì)路徑下的圖片解決方法
- 相關(guān)鏈接:
- 教程說明:
JSP教程-如何實(shí)現(xiàn)javabean的屬性拷貝。