`
baobeituping
  • 浏览: 1068566 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

利用反射给JAVABEAN实例赋值

阅读更多

package com.util;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.dom4j.Document;
import org.dom4j.Element;

import alarminterface.CglibBean;
import backupsubsystem.testclient.TestBean;

public class ParameterUtil {

  public static void main(String[] args)
     {
        /* XmlHandle xmlHandle = new XmlHandle();
         try
         {
           
             Document document = null;
             document = xmlHandle.getXmlFromFile("conf/Test.xml");
             List root = document.selectNodes("/conf/action");
            
             Map hm = new HashMap();
             TestBean beans = new TestBean();
             if (root != null)
             {
              for(Object o:root){
               
                     Element e = (Element) o;
                   
                     loopElement(e,hm);
                 }
              
              Iterator iter = hm.entrySet().iterator();
        while (iter.hasNext()) {
          Map.Entry m=(Map.Entry)iter.next();
          setFormBean(beans,(String)m.getKey(),(String)m.getValue());
         // System.out.println(m.getKey()+"aaa");
        }
            
             }
             System.out.println(beans.getCon_driver()+":"+beans.getCon_url());
       
         } catch (Exception e)
         {
            e.printStackTrace();
         }*/
     }

 

//该方法第一个参数就是你要填充数据的BEAN,第二个参数是具体给哪个参数赋值,第三个参数是赋值的数据
 public static void setFormBean(Object bean,String key,String value) {
  Class c = bean.getClass();
  //System.out.println(c+":"+key+":"+value);
  Method[] ms = c.getMethods();
  for (int i = 0; i < ms.length; i++) {
   String name = ms[i].getName();
   if (name.startsWith("set")) {
    Class[] cc = ms[i].getParameterTypes();
    if (cc.length == 1) {
     String type = cc[0].getName(); // parameter type
     try {
      // get property name:
      String prop = Character.toLowerCase(name.charAt(3))
        + name.substring(4);
      //System.out.println("%% "+prop);
      // get parameter value:
      String param = value;
     
      if(key.equals(prop))
      {
       if (param != null && !param.equals("")) {
        // ms.setAccessible(true);
        if (type.equals("java.lang.String")) {
         ms[i].invoke(bean, new Object[] { param });
        } else if (type.equals("int")
          || type.equals("java.lang.Integer")) {
         ms[i].invoke(bean, new Object[] { new Integer(
           param) });
        } else if (type.equals("long")
          || type.equals("java.lang.Long")) {
         ms[i].invoke(bean, new Object[] { new Long(
           param) });
        } else if (type.equals("boolean")
          || type.equals("java.lang.Boolean")) {
         ms[i].invoke(bean, new Object[] { Boolean
           .valueOf(param) });
        } else if (type.equals("java.util.Date")) {

        }
       }
       break;
      }
      
      
     } catch (Exception ex) {
      ex.printStackTrace();
     }
    }
   }
  }
 }
 

 
 
 
 
}

分享到:
评论

相关推荐

    利用反射实现JavaBean 的自动赋值

    ### 利用反射实现JavaBean的自动赋值 在软件开发过程中,特别是在Web应用程序的开发中,经常会遇到需要将表单提交的数据绑定到JavaBean对象上的需求。这可以通过多种方式实现,例如使用Spring MVC等框架的自动绑定...

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    `BeanUtils.populate()`方法将Map中的数据自动赋值给了`user`对象。 在实际开发中,Apache Commons BeanUtils库提供了BeanUtil工具类。你可以在项目中引入这个库,然后就可以使用`BeanUtils`类提供的方法。当然,...

    javabean基础知识

    - **具有无参构造函数**:这是JavaBean的基本要求之一,确保可以通过反射等机制创建JavaBean实例。 - **使用get/set方法访问其属性**:JavaBean的属性通常遵循JavaBeans规范,即通过get和set方法来访问和修改。 ...

    javabean源码

    - **反射**:在运行时动态地获取类的信息并操作JavaBean。 - **JSP页面**:在Web开发中,JavaBean可以作为模型层,与JSP视图层进行数据交换。 5. **JavaBean在MVC架构中的角色**: 在MVC架构中,JavaBean作为...

    JAVA反射机制实例教程

    这里,`isAssignableFrom()`方法检查当前`Class`对象是否可以被赋值给`ClassToCheck`对象,等价于`instanceof`的功能。 总结,Java反射机制为程序提供了强大的动态能力,但同时也带来了一定的安全风险和性能影响,...

    使用反射自动装填前台数据和struts自动装填很像

    这些工具类利用了JavaBean规范,即对象的公共setter方法,来设置属性值。因此,只要ActionForm的属性名与请求参数名相匹配,Struts就能自动完成数据的填充。 接下来,我们转向反射。反射是Java语言的一项强大功能,...

    JSP组件JButil

    然后,在JSP或Servlet中,调用`JButil`的静态方法,如`fillBean()`,传入HttpServletRequest对象和JavaBean实例,即可自动完成参数填充。 ```java // 假设有一个UserBean类,属性有id, name, age public class ...

    Java基础_第二阶段-day18每日作业卷1

    - **反射操作**:它利用Java的反射机制,自动寻找JavaBean的属性并进行操作。 - **简化代码**:避免了繁琐的属性赋值过程,提高了代码的可读性和简洁性。 2. **使用BeanUtils工具包的操作步骤**: - **导入依赖*...

    xmlPares用户只需填参数就可解析

    然而,需要注意的是,反射操作通常比直接的实例化和赋值操作慢,因此在性能敏感的场景下需要谨慎使用。 总的来说,“xmlPares”为Android开发提供了一种便捷的XML解析方案,通过反射机制简化了XML数据到Java对象的...

    java bean 与 Web Form表单如何实现自动装配

    当找到匹配的属性时,我们使用反射调用对应的setter方法,将表单域的值转化为与Bean属性类型一致的数据,并赋值给Bean的属性。这个过程中可能需要进行类型转换,例如将字符串转换为整数、日期等。 在Struts2的模型...

    commons-beanutils

    2. **性能考虑**:频繁使用反射可能会对性能造成一定影响,因此在性能敏感的场景下,可以考虑缓存`PropertyDescriptor`实例。 3. **安全问题**:BeanUtils允许访问私有属性,这可能带来安全风险,使用时需谨慎。 ...

    commons-beanutils-1.8.0

    例如,当尝试将字符串赋值给一个整型属性时,BeanUtils会自动进行转换。 3. **复制属性**:`BeanUtils.copyProperties()`方法能够将一个对象的所有属性值复制到另一个对象中,这对于创建对象的副本或数据传递非常...

    Spring源码分析.docx

    例如,如果 BeanDefinition 对象定义了一个 JavaBean,Spring 框架会使用 Java 反射机制创建一个新的 JavaBean 实例。 5. 到达填充属性,对属性赋值 在实例化完成后,Spring 框架会对 Bean 对象进行属性赋值。在这...

    Java开发技术大全 电子版

    9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取成员方法信息295 9.6.3获取构造方法信息296 9.6.4获取类的成员属性297 9.6.5根据方法的名称来执行方法299 9.6.6创建新的...

    Java开发技术大全(500个源代码).

    listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的...

    移通笔试.doc

    - `&lt;jsp:useBean&gt;`:用于实例化JavaBean。 - `&lt;jsp:setProperty&gt;` 和 `&lt;jsp:getProperty&gt;`:用于设置和获取JavaBean的属性值。 #### 8. 静态include与动态include的区别 - **静态include**:在编译阶段就将被包含...

    Java - Spring-IoC(Inverse of Control)–> 控制反转

    - **注解配置**:通过`@Component`及其派生注解(如`@Controller`、`@Service`、`@Repository`)来声明组件,并使用`@Value`为属性赋值。 - **Java配置**:使用`@Configuration`和`@Bean`注解来声明配置类。 #### 4...

    Velocity模板技术

    示例中的`#foreach($kkin$user)`表示遍历`user`列表中的每一个元素,并将其赋值给`$kk`。 - `#end`:结束循环或条件判断指令。 2. **Velocity初始化配置**: - 在Servlet示例中,我们看到使用`Properties`类来...

    JSP 开发之Spring BeanUtils组件使用

    这样的设计使得JavaBean可以通过反射机制被其他工具或框架在运行时动态地访问和操作其属性。 Spring的BeanUtils组件为我们提供了简化属性复制的方法,比如`copyProperties`,它可以高效地将一个源对象的属性值拷贝...

    Java经典问题答案(带书签)

    - javaBean特点:JavaBean是具有特定特征的Java类,通常是可序列化的,拥有一个无参构造器,以及私有成员变量和公共的getter和setter方法。 以上仅是文件内容中涉及的Java知识点的简要总结,实际使用时需要结合具体...

Global site tag (gtag.js) - Google Analytics