JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JSP技术--STRUTS  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
如何遍历并执行一个对象的所有可用方法
作者:whilvydy 王辉     文章来源:jsp中文网
访问次数:1937次     加入时间:2004年03月06日
在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

呵呵
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号