自己用反射写的一个javaBean工具类
2012-02-05 14:48
323 查看
老师上课给我们讲了点关于反射的知识,于是我在网上找了点资料,自己用反射写了个工具类.
适用范围:当我们在jsp页面需要接收很多值的时候,如果用request.getParameter(属性名)一个一个写的话那就太麻烦了,于是我想是否能用反射写个工具类来简化这样的代码,经过1个小时的代码修改调试,终于雏形出来了,很高兴调试成功,呵呵,代码贴出来.
View Code
适用范围:当我们在jsp页面需要接收很多值的时候,如果用request.getParameter(属性名)一个一个写的话那就太麻烦了,于是我想是否能用反射写个工具类来简化这样的代码,经过1个小时的代码修改调试,终于雏形出来了,很高兴调试成功,呵呵,代码贴出来.
View Code
package com.student.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; public class BuildBeanUtil { @SuppressWarnings("unchecked") public <T> T buildBean(HttpServletRequest request,Class<T> beanClass) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ //beanClass set方法 List<Method> setMethods=new ArrayList<Method>(); //beanClass set方法名 List<String> setMethodNames=new ArrayList<String>(); //beanClass 属性名 List<String> propertyNames=new ArrayList<String>(); //表单数据 List<String> formValues=new ArrayList<String>(); //1、获得该JavaBean的所有的set方法 Method[] methods=beanClass.getMethods(); for(Method m:methods){ if(m.getName().indexOf("set")==0){ setMethods.add(m); } } //2、实例化该javaBean Object beanObj=beanClass.newInstance(); //3、循环set方法数组 for(Method m:setMethods){ String methodName=m.getName(); //3-1、获得方法名 setMethodNames.add(methodName); //3-2、通过方法名推测出属性名 String name=methodName.substring(3).toLowerCase(); propertyNames.add(name); } //3-3、通过request.getParameter(属性名)获得表单数据 for(String p:propertyNames){ String value=request.getParameter(p); formValues.add(value); } //3-4、将表单数据转型成为正确的类型,该类型为此set方法的第一个参数的类型 for(int i=0;i<setMethods.size();i++){ Method m=setMethods.get(i); String type=m.getGenericParameterTypes()[0].toString(); String value=formValues.get(i); //判断参数数据类型 //3-5、调用上面实例化的javaBean的此set方法 if(type.equals("class java.lang.String")){ m.invoke((T)beanObj, value); }else if(type.equals("class java.lang.Integer")){ m.invoke((T)beanObj, Integer.parseInt(value)); } } //4、返回该javaBean return (T) beanObj; } }
相关文章推荐
- (反射方法)写一个将一个String类型的json经过base64加密后解密转化成javaBean的工具类
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象[修订081217]
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- Android中通过反射获取资源Id(特别用在自己定义一个工具将其打成.jar包时,特别注意资源的获取)
- 使用反射复制一个JavaBean的对象
- Android中通过反射获取资源Id(特别用在自己定义一个工具将其打成.jar包时,特别注意资源的获取)
- json数据与JAVA数据的转换 jsonJavaBean.netApache 自己编写了一个工具类,处理页面提交json格式数据到后台,再进行处理成JAVA对象数据 1、DTO:Data T
- 写一个将一个String类型的json经过base64加密后解密转化成javaBean的工具类
- 使用反射复制一个JavaBean的对象
- 本人自己写的一个ASP.NET的验证码工具类,以供大家参考。因为本人经验尚浅,如有哪些地方不足或错误,希望大家指出来,不胜感谢!
- Android 反射机制下去做一个能够根据自己意愿退出的AlertDialog
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
- 基于java反射的javabean和map相互转换的工具类
- JavaBean 用反射自己实现简单内省操作 基础
- 基于java反射的javabean和map相互转换的工具类
- 一个项目思路(1):用反射机制写的函数,使2个javabean相同属性一次性导入
- 自己手写的一个关于中英文切换时间的工具类
- 一个很好用的反射工具类
- 自己封装的一个工具类