📄 readbean.java
字号:
package com.mypro.pub.util;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import javax.servlet.http.HttpServletRequest;
public abstract class ReadBean {
public Object getObjByRequest(HttpServletRequest request, Object object) {
Object obj = object;
try {
// 得到obj的类型
Class cl = obj.getClass();
// 得到cl中的所有方法
Method[] methods = cl.getMethods();
// 得到方法的大小
int methodSize = methods.length;
// 定义了一个变量返回的类型
Class returnType = null;
// 定义了我们需要的set方法的名称
String methodName = null;
// 定义了Bean中所有变量的名称
String fieldName = null;
// 定义了一个变量对象 --这个变量是需要复制的变量
Object parameter = null;
// 定义了一个简单的时间格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i < methodSize; i++) {
// 只得到方法名中含有get的方法 并且非getClass方法
if (methods[i].getName().startsWith("get")
&& !methods[i].getName().equals("getClass")) {
methodName = "set" + methods[i].getName().substring(3);
fieldName = lowerFirstChar(methods[i].getName()
.substring(3));
// 定义了需要调用的变量
Method localMethod = cl.getMethod(methodName, returnType);
// 需要手动判断parameter的类型 进行强制转换
// String , Integer ,Date ,Double
if (returnType.getSimpleName().equals("String")) {
parameter = request.getParameter(fieldName) != null ? (String) request
.getParameter(fieldName)
: "";
} else if (returnType.getSimpleName().equals("Integer")) {
parameter = request.getParameter(fieldName) != null ? Integer
.parseInt(request.getParameter(fieldName))
: 0;
} else if (returnType.getSimpleName().equals("Date")) {
parameter = request.getParameter(fieldName) != null ? sdf
.parse(request.getParameter(fieldName))
: null;
} else if (returnType.getSimpleName().equals("Double")) {
parameter = request.getParameter(fieldName) != null ? Double
.parseDouble(request.getParameter(fieldName))
: 0.0;
}
localMethod.invoke(obj, parameter);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
/**
* 得到变量名的第一个字母小写
*
* @param str
* @return
*/
public static String lowerFirstChar(String str) {
String first = (str.substring(0, 1)).toLowerCase();
String other = str.substring(1);
return first + other;
}
/*public static void main(String args[]) {
// HttpServletRequest request=null;
User user = new User();
try {
Class cl = user.getClass();
Object obj = cl.newInstance();
// Field[] field=cl.getDeclaredFields();
Method[] methods = cl.getMethods();
String methodName = null;
String fieldName = null;
* for(int i=0;i<field.length;i++){ Field f=field[i]; String
* fieldName=f.getName(); methodName="set"+upFirstChar(fieldName);
* System.out.println(fieldName); }
int methodSize = methods.length;
Object parameter = new Object();
Class returnType = null;
for (int j = 0; j < methodSize; j++) {
if (methods[j].getName().startsWith("get")
&& !methods[j].getName().equals("getClass")) {
methodName = "set" + methods[j].getName().substring(3);
fieldName = lowerFirstChar(methods[j].getName()
.substring(3));
returnType = methods[j].getReturnType();
// 手动判断类型后进行强制转换
System.out.println(returnType.getSimpleName().equals(
"String"));
Method localMethod = cl.getMethod(methodName, returnType);
parameter = methods[j].invoke(obj, null);
localMethod.invoke(obj, parameter);
}
}
// System.out.println(obj.);
* //定义构造器数组 Constructor[] constructors =
* cl.getDeclaredConstructors();
*
* for (int i = 0; i < constructors.length; i++) { //将数组元素赋给一个构造器对象
* Constructor constr = constructors[i]; String name =
* constr.getName(); //获取构造器名称 //打印访问修饰符
* System.out.print(Modifier.toString(constr.getModifiers()));
* System.out.print(" "+ name + "(");
*
*//**
* 定义一个参数类型数组该数组是Class对象 getParameterTypes()返回该构造器参数类型的数组
* 打印参数类型名称
*//*
* Class[] paramTypes = constr.getParameterTypes(); for (int j = 0;
* j < paramTypes.length; j++) { if (j > 0) System.out.print(", ");
* System.out.print(paramTypes[j].getName()); }
* System.out.println(");"); }
} catch (Exception e) {
e.printStackTrace();
}
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -