EL表达式和JSTL(二)——BeanUtils工具

BeanUtils工具

  大对数人习惯使用JavaBean的get和set方法来获取和设置JavaBean的属性,但是在Java EE编程的过程中,会经常从配置文件中读取数据,但是从配置文件中读取的数据都是String类型,但是程序并不是只有一种String类型,还有一些自定义的类型,因此,我们将字符串转为特定的数据类型,方法有两种:

  1.首先,判断需要的数据类型,然后对字符串调用相关的方法,将其转换为我们需要的数据类型。

  2.使用BeanUtils工具;

  第一种方法太过繁琐,使用第二种方法只需使用其中两个方法就,即可。

BeanUtils工具解决的主要问题:

  把对象的属性数据封装到对象中。

BeanUtils工具使用需要的包:

  1.commons-beanutils-1.9.2.jar;

  2.commons-logging-1.2.jar;

BeanUtils类发常用方法:

  static void populate(Object bean,Map<String,?exteds Object>properties):根据指定的名称/值对为相应的JavaBean属性设置属性值。

  static void setProperty(Object bean,String name,Object value): 设置指定的属性,传入的类型要求能转换为相应的类型

  static String getProperty(Object bean,String name):返回指定Bean指定属性的值,返回类型是String类型。

BeanUtils的实例:

  设置一个Person类:

package cn.it.gan.BeanUtilsDemo;

public class Person {
    private String naem;
    private int age;

    public Person() {

    }

    public Person(String naem, int age) {
        super();
        this.naem = naem;
        this.age = age;
    }

    public String getNaem() {
        return naem;
    }

    public void setNaem(String naem) {
        this.naem = naem;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

}

  设置一个BeanUtilsDemo类测试BeanUtils工具

package cn.it.gan.BeanUtilsDemo;

import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;

public class BeanUtilsDemo {
    public static void main(String[] args) throws Exception, InvocationTargetException {
        Person p = new Person();
        // 使用BeanUtils来为p赋值
        BeanUtils.setProperty(p, "naem", "Jack");
        BeanUtils.setProperty(p, "age", 29);
        // 使用BeanUtils工具获得p的值
        String name = BeanUtils.getProperty(p, "naem");
        String age = BeanUtils.getProperty(p, "age");
        System.out.println("姓名为:" + name + ",  年龄为:" + age);

        // 创建Map集合,用来存放属性
        Map map = new HashMap<String, Object>();
        map.put("naem", "张三");
        map.put("age", 30);
        // 使用populate()方法来设置属性
        BeanUtils.populate(p, map);
        System.out.println("姓名为:" + p.getNaem() + ",  年龄为:" + p.getAge());

    }

}

  运行结果:

          

注意:使用setProperty给赋值的话,少赋值一个属性的话是不会报错的,只会是null,多给一个没有的属性赋值的话也不会报错,只是不会赋值进去而已;

  使用map集合赋值时,要求Map的Key和JavaBean的属性名时一致的。

原文地址:https://www.cnblogs.com/zhilili/p/10888646.html