大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Java技巧 > 不使用BeanUtils,利用Java反射机制:表单数据自动

不使用BeanUtils,利用Java反射机制:表单数据自动(2)

关键词:BeanUtilsJava反射机制表单数据JavaB  阅读(1213) 赞(11)

[摘要]本文是对不使用BeanUtils,利用Java反射机制:表单数据自动封装到JavaBean的讲解,对学习Java编程技术有所帮助,与大家分享。

  Utils工具类:

 package com.it.servlet;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Enumeration;
 
 import javax.servlet.http.HttpServletRequest;
 
 public class Utils {
     //传入className字符串作为参数,只是想运用反射来完成这个功用
      //也可以传入Object obj一个对象,就看本人的设计了 public static Object getBean(HttpServletRequest request, String className) { try {       //className为JavaBean途径,获取Class Class c=Class.forName(className);      //运用反射读取结构,创立bean对象 Object obj=c.getConstructor().newInstance();      //运用request获取一切表单项name,同时标准要求bean的属性名和表单项名必需分歧。 Enumeration<String> enu=request.getParameterNames(); while(enu.hasMoreElements()){ String fieldName=enu.nextElement();          //运用属性名获取set/get办法名 String setMethodName="set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1); String getMethodName="get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);         //获取无参的get办法 Method getMethod=c.getMethod(getMethodName, null);         //运用无参有前往值的get办法取得对应的set办法(get办法前往类型与set办法参数录入类型分歧) Method setMethod=c.getMethod(setMethodName, getMethod.getReturnType());         //调用录入详细的参数值,保管到bean对象中。 String value=request.getParameter(fieldName);          //由于set办法中的参数类型不一样,因而要做相应的转换 switch (getMethod.getReturnType().getName()) {   case "int":   setMethod.invoke(obj, Integer.parseInt(value));    break;   case "float":    setMethod.invoke(obj, Float.parseFloat(value));   break;   case "double":    setMethod.invoke(obj, Double.parseDouble(value));    break;   case "long":    setMethod.invoke(obj, Long.parseLong(value));   break;   default:    setMethod.invoke(obj, value);    } return obj; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }

运转后果:

«上一页12下一页»


相关评论