BeanUtils类

BeanUtils

BeanUtils是Apache Commons组件的成员之一,
主要用于简化JavaBean封装数据的操作。
简化反射封装参数的步骤,给对象封装参数。
好处: BeanUtils给对象封装参数的时候会进行类型自动转换。

需要导入三个jar包:

版本1:
commons-beanutils-1.9.3.jar //工具核心包
commons-collections-3.2.2.jar//增强的集合包
commons-logging-1.2.jar//日志记录包
版本2:
commons-beanutils-1.8.0.jar
commons-logging-1.1.1.jar

JavaBean

JavaBean就是一个类,但该类需要满足以下三个条件:

  1. 类必须使用public修饰。
  2. 提供无参数的构造器。
  3. 提供getter和setter方法访问属性。

JavaBean中注意点

字段:就是成员变量,字段名就是成员变量名。

属性:属性名通过setter/getter方法去掉set/get前缀,首字母小写获得(同el表达式的取值方式),
javabean中的成员属性要和form表单中name属性的值保持一致。

比如:setName()–> Name–> name
一般情况下,字段名和属性名和form表单中name属性的值一致的。

BeanUtils常用方法:

1. public static void setProperty(Object bean, String name, Object value)
给指定对象bean的指定name属性赋值为指定值value。
//如果指定的属性不存在,则什么也不发生。2.public static String getProperty(Object bean, String name)
获取指定对象bean指定name属性的值。
//如果指定的属性不存在,则会抛出异常。
注意:当属性的类型是数组类型时,获取到的值数组中的第一个值。
​
3.public static void copyProperties(Object dest, Object orig)    
将对象orig的属性值赋值给对象dest对象对应的属性
注意:只有属性名名相同且类型一致的才会赋值成功。
​
4. public static void populate(Object bean, Map<String, ? extends Object>
properties)
将一个Map集合中的数据封装到指定对象bean中
注意:对象bean的属性名和Map集合中键要相同。

BeanUtils使用场景:

  1. 快速将一个JavaBean各个属性的值,赋值给具有相同结构的另一个JavaBean中。
  2. 快速收集表单中的所有数据到JavaBean中。

快速收集表单中的所有数据到JavaBean中:

/****************************方法一*/
	/**
	 * BeanUtils可以直接get和set一个属性的值。它将property分成3种类型:   
	 * Simple——简单类型,如Stirng、Int……   
	 * Indexed——索引类型,如数组、arrayList……  
	 * Maped——这个不用说也该知道,就是指Map啦,比如HashMap 
	 * 以下方法获取参数,封装成bean,
	 * 约定前提: 请求中的参数名称 需要和javabean的属性名称保持一致!!!!
	 */
	public static <T> T getRequestBean(HttpServletRequest request,Class<T> clazz){
		T bean=null;
		try {
			//实例化clazz
			bean = clazz.newInstance();
			//获取request请求中所有携带的参数,返回Enumeration枚举类型
			Enumeration<String> enumeration = request.getParameterNames();
			//判断这个枚举中是否存在下一个参数key,存在 :true,不存在:false
			while(enumeration.hasMoreElements()){
				//取得参数key
				 String name = enumeration.nextElement();
				 //根据参数key,获取值(value)
				 String value = request.getParameter(name);
				 //给bean中对应的属性name设置值value
				 BeanUtils.setProperty(bean, name, value);	  
			}
		} catch (Exception e) {
			
		}
		return bean;
	}
/*************************************方法二*/
	public static <T> T getRequestParam(HttpServletRequest request,Class<T> clazz){
		T t=null;
		try {
			t = clazz.newInstance();
			Map<String, String[]> map = request.getParameterMap();
			BeanUtils.populate(t, map);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return t;
	}

猜你喜欢

转载自blog.csdn.net/qq_26869339/article/details/82806301