BeanUtils
相关jar包
BeanUtils是第三方组织写的工具类,要使用它,得先下载对应的工具JAR包。
- 下载地址:http://commons.apache.org/
- 相关的jar包
commons‐beanutils‐1.9.3.jar // 工具核心包
commons‐logging‐1.2.jar // 日志记录包
commons‐collections‐3.2.2.jar // 增强的集合包
常用操作
- 对JavaBean的属性进行赋值和取值。
getProperty()
setProperty()- 将一个JavaBean所有属性赋值给另一个JavaBean对象中。
copyProperties- 将一个Map集合的数据封装到一个JavaBean对象中。
populate
常用方法
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编写WebUtils类
package cn.yinjian.utils;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils;
public class WebUtils {
/**
* 方法1:利用request.getParameterNames()方法
* 将request请求的参数和值封装到JavaBean中,需导入第三方jar包:commons-beanutils-1.9.3.jar
* 同时需要:commons-collections-3.2.2.jar&commons-beanutils-1.9.3.jar,否则会抛出异常
*
* @param request
* @param beanClass
* @return
*/
public static <T> T requestToBean(HttpServletRequest request, Class<T> beanClass) {
T t = null;
try {
t = beanClass.newInstance();
// 使用getParameterNames()获取 参数名(枚举类型)
Enumeration<String> parameterNames = request.getParameterNames();
// 测试此枚举是否包含更多的元素
while (parameterNames.hasMoreElements()) {
// 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
String name = parameterNames.nextElement();
// 获取参数name对应的value
String value = request.getParameter(name);
// 对bean属性进行赋值
BeanUtils.setProperty(t, name, value);
}
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
/**
* 方法2:利用request.getParameterMap()方法
* @param request
* @param t
* @return
*/
public static <T> T param2Bean(HttpServletRequest request, T t) {
// 获得参数map
Map<String, String[]> parameterMap = request.getParameterMap();
System.out.println(parameterMap);
try {
// 将一个Map集合中的数据封装到指定对象bean中
BeanUtils.populate(t, parameterMap);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
}