java反射 javabean_Java反射之模仿JavaBean接收表单参数.

依旧用代码言语。。

这是一个Java Project

package com.jadyer.reflection;import java.io.FileReader;import java.lang.reflect.Method;import java.util.Enumeration;import java.util.Hashtable;import java.util.Properties;import com.jadyer.model.Student;public class ImitateJavaBean {private static Hashtable mySession; //模仿Web编程中的session对象static{mySession = new Hashtable();mySession.put("stu", new Student());}public static void main(String[] args) throws Exception{Properties properties = new Properties();FileReader fileReader = new FileReader("props.txt");properties.load(fileReader); //导入指定文件中所有属性消息fileReader.close(); //关闭敞开的文件Enumeration> propertiesNames = properties.propertyNames(); //获得所有的属性名while(propertiesNames.hasMoreElements()){String name = (String)propertiesNames.nextElement();String value = properties.getProperty(name);ImitateJavaBean.invokeSetter("stu", name, value); //厉行setter措施,为属性赋值}System.out.println(ImitateJavaBean.mySession.get("stu")); //输出stu符号的元素的值,即student对象}public static void invokeSetter(String beanName, String propertyName, String propertyValue) throws Exception{Object obj = mySession.get(beanName);Class> clazz = obj.getClass();//动态构造一个setter措施,例如name --> setName//propertyName.substring(0,1)能够取出属性名的第一个字母//propertyName.substring(1)能够隶属性名的第2个字母开始取出所有其它的字母String methodName = "set" + propertyName.substring(0,1).toUpperCase() + propertyName.substring(1);//Method method = clazz.getMethod(methodName,遥控蝴蝶 java.lang.String.class) //也能够这么写Method method = clazz.getMethod(methodName, new Class[]{java.lang.String.class});method.invoke(obj, propertyValue);//将propertyValue作为该措施的参数值,然后调用该措施} }

下面是用到的Student类

package com.jadyer.model;public class Student {private String name;private String password;public void setName(String name) {this.name = name;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "Name:" + name + "/tPassword:" + password;}}

最后是用到的位于Java Project根目录中的属性文件props.txt

name = Adminpassword = Jadyer

public synchronized void setValues (int height,int width)

throws

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值