封装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;
}
}