使用BeanUtils(Apache Commons组件)将request获取的参数封装成JavaB

BeanUtils

相关jar包

BeanUtils是第三方组织写的工具类,要使用它,得先下载对应的工具JAR包。

  1. 下载地址:http://commons.apache.org/
  2. 相关的jar包
    commons‐beanutils‐1.9.3.jar // 工具核心包
    commons‐logging‐1.2.jar // 日志记录包
    commons‐collections‐3.2.2.jar // 增强的集合包

常用操作

  1. 对JavaBean的属性进行赋值和取值。
    getProperty()
    setProperty()
  2. 将一个JavaBean所有属性赋值给另一个JavaBean对象中。
    copyProperties
  3. 将一个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;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39905910/article/details/82805962