通过HttpServletRequest请求对象,将前端使用form表单请求的参数拷贝到javaBean中,封装通用代码

通过HttpServletRequest请求对象,将前端使用form表单请求的参数拷贝到javaBean中

封装通用代码

/**
 * 复制请求参数到javaBean
 * 
 * @param HttpServletRequest
 * @param Object
 * @return Object
 */
public static Object copyRequestParamToBean(HttpServletRequest request, Object object) throws Exception
{
	// 1. 声明参数对象
	JSONObject params = new JSONObject();//可以将此对象换为HashMap
	// 2. 获取所有的请求参数
	Enumeration<String> parameters = request.getParameterNames();
	// 3. 将所有的参数保存到json对象中
	while (parameters.hasMoreElements())
	{
		String paramname = parameters.nextElement();// 参数名称
		params.put(paramname, request.getParameter(paramname));
	}
	// 4.遍历匹配java查询Bean属性
	Field[] fields = object.getClass().getDeclaredFields();
	for (int i = 0; i < fields.length; i++)
	{
		// 4.1获取属性信息
		Field field = fields[i];// 属性信息
		String attributename = field.getName();// javaBean属性名称
		String type = field.getGenericType().toString();// 字段数据类型
		if (!params.containsKey(attributename))
		{
			continue;// 只更新上送的参数
		}
		if (params.get(attributename) == null)
		{
			continue;// 过滤掉空参数
		}
		String setName = "set" + attributename.substring(0, 1).toUpperCase() + attributename.substring(1); // 将属性的首字符大写,方便构造get,set方法
		// 4.2设置属性参数
		switch (type)
		{
			case "class java.math.BigDecimal":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { BigDecimal.class });
				// 执行set方法
				method.invoke(object, new Object[] { new BigDecimal(params.getString(attributename)) });
				break;
			}
			case "class java.lang.Boolean":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Boolean.class });
				// 执行set方法
				method.invoke(object, new Object[] { new Boolean(params.getString(attributename)) });
				break;
			}
			case "class java.lang.Byte":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Byte.class });
				// 执行set方法
				method.invoke(object, new Object[] { new Byte(params.getString(attributename)) });
				break;
			}
			case "class java.util.Date":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Date.class });
				Date date = new Date(params.getLong(attributename));
				// 执行set方法
				method.invoke(object, new Object[] { date });
				break;
			}
			case "class java.lang.Double":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Double.class });
				// 执行set方法
				method.invoke(object, new Object[] { new Double(params.getString(attributename)) });
				break;
			}
			case "class java.lang.Float":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Float.class });
				// 执行set方法
				method.invoke(object, new Object[] { new Float(params.getString(attributename)) });
				break;
			}
			case "class java.lang.Integer":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Integer.class });
				// 执行set方法
				method.invoke(object, new Object[] { params.getInt(attributename) });
				break;
			}
			case "class java.lang.Long":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { Long.class });
				// 执行set方法
				method.invoke(object, new Object[] { params.getLong(attributename) });
				break;
			}
			case "class java.lang.String":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { String.class });
				// 执行set方法
				method.invoke(object, new Object[] { params.getString(attributename) });
				break;
			}
			case "class net.sf.json.JSONObject":
			{
				// 获取set方法
				Method method = object.getClass().getMethod(setName, new Class[] { JSONObject.class });
				JSONObject json = new JSONObject();
				// 执行set方法
				method.invoke(object, new Object[] { json.fromObject(params.getString(attributename)) });
				break;
			}
			case "class java.util.List":
			{
				break;
			}
			case "class java.util.ArrayList":
			{
				break;
			}
			default:
			{
				throw new Exception("未设定的数据类型:" + type);
			}
		}
	}
	return object;
}

若有新的想法或建议,欢迎评论留言,谢谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TorZhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值