在struts应用中,对于从数据库中提取记录并显示出来,我们可以在javabean中完成, 但是对于数据库表格中的每一条记录,我们可能都要写出如下代码,才能将一条记录 中的各个属性值写入一个form对象中,例如对下面一个类test.User
代码如下:
package test; import java.io.Serializable; public final class User implements Serializable { private String name = null; private String ps = null; public String getName () { return (this.name); } public void setName(String name) { this.name = name; System.out.println(name); }
public String getPs () {
return (this. ps);
}
public void setPs (String ps) {
this. ps = ps; System.out.println(ps); }
}
我们可能要写出如下代码
//数据库连接部分 ResultSet rs = conn.executeQuery("select * from user");
while(rs.next()) { test.User user = new test.User(); user.setName = rs.getString("name"); user.setPs = rs.getString("ps"); //将user对象加入到一个ArrayList对象中 }
这里表格user只有两个属性,name和ps,但是当属性很多时,这样写就很麻烦了, 并且对每一个表格来说,这一段代码都要重新写,所以我们就想到,能不能通过 遍历一个类方法,并且执行该类的一个对象的所有方法,让程序自动去完成这部 分工作呢?
当然可以,这个问题的重点和难点就在于如何去遍历 首先,我们必须得到一个类的用户定义的方法, 方法如下: 我们可以先创建一个类对象(不同于类的对象) Class newClass = Class.forName(className); 通过该类对象的getDeclaredMethods()方法得到它的方法,如下 Method[] methods = newClass.getDeclaredMethods(); 而执行可以通过方法对象的invoke()来执行, 多的话就不说了,下面就是一段代码: for (int i=0;i<methods.length;i++) { m = methods[i]; methodName = m.getName(); if(methodName.startsWith("set")) { propertyName = methodName.substring(3,4).toLowerCase()+methodName.substring(4,methodName.length()); recordValue=rs.getString(propertyName); if(recordValue==null) recordValue=""; m = newClass.getMethod(methods[i].getName(),new Class[]{recordValue.getClass()}); m.invoke(o,new Object[]{recordValue});
} } 这是俺的第一篇文章,如有疑问,可以和我联系 webmaster@jspcn.net 呵呵
|
|