封装form表单提交后的request的请求,要求form表单参数名称要和实体类相同!

封装form表单提交后的request的请求要求form表单参数名称要和实体类相同

实体类

**package com.news.bean;
public class U {
private int id;
private String username;
private String pwd;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return “U username=” + username + “, pwd=” + pwd + “, age=” + age + “]”;
}

}**

工具类

package com.news.utils;

import java.lang.reflect.Method;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

/***

  • 封装form表单提交后的request的请求
  • 要求form表单参数名称要和实体类相同
  • @author Administrator

*/
public class Util {
// 传入的className

public static Object getobject(HttpServletRequest request,String className) {
	try {
		//className为JavaBean路径,获取Class
		Class<?> c=Class.forName(className);
		//利用反射读取构造,创建bean对象
		Object obj=c.getConstructor().newInstance();//实例化
		//获取表单名
		Enumeration<String> enu = request.getParameterNames();
		System.out.println();
		while(enu.hasMoreElements()) {
			String fieldName=enu.nextElement();//获取表单字段
			//获取方法名
			String methodName="set"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
			System.out.println(fieldName+"方法名"+methodName);
			//获取所有方法
			Method method = getMethod(methodName, c.getDeclaredMethods());
			//获取参数类型
			Class<?>[] parameterTypes = method.getParameterTypes();
			String value=request.getParameter(fieldName);
			System.out.println(value);
			if("long".equals(parameterTypes[0].getSimpleName())){
				method.invoke(obj, Long.parseLong(value));//进行赋值
			}
			if("int".equals(parameterTypes[0].getSimpleName())){
				method.invoke(obj, Integer.parseInt(value));
			}
			if("String".equals(parameterTypes[0].getSimpleName())){
				method.invoke(obj, value);
			}
			if("Date".equals(parameterTypes[0].getSimpleName())){
				// 假定是yyyy-MM-dd
				method.invoke(obj, Dateformat.toDate(value, "yyyy-MM-dd"));
			}
			// 省略了其它类型的处理
		}
		return obj;
	} catch (Exception e) {
		
}
	return null;

}
private static Method getMethod(String methodName, Method[] declaredMethods) {

	for(Method method:declaredMethods){
	   if(method.getName().equals(methodName)){
		   return method;
	   }	
	}
	return null;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值