servlet的应用------request对象和bean实体的反射关系
public class FormBeanVO{
public <T> T getFormBean(HttpServletRequest request, Class<T> k) {
try {
T o = k.newInstance();
for(Method m : k.getDeclaredMethods()) {
String mName = m.getName();
String requestName = request.getParameter(setLower(mName.substring(3)));
if(requestName == null || "".equals(requestName)) continue;
else {
if(mName.startsWith("set")) {
if(m.getParameterTypes()[0].equals(int.class) ||
m.getParameterTypes()[0].equals(Integer.class)) {
m.invoke(o, Integer.valueOf(requestName));
}
else if(m.getParameterTypes()[0].equals(boolean.class) ||
m.getParameterTypes()[0].equals(Boolean.class)) {
m.invoke(o, Boolean.valueOf(requestName));
}
else if(m.getParameterTypes()[0].equals(String.class)) {
m.invoke(o, requestName);
}
else if(m.getParameterTypes()[0].equals(float.class) ||
m.getParameterTypes()[0].equals(Float.class)) {
m.invoke(o, Float.valueOf(requestName));
}
else if(m.getParameterTypes()[0].equals(long.class) ||
m.getParameterTypes()[0].equals(Long.class)) {
m.invoke(o, Long.valueOf(requestName));
}
else if(m.getParameterTypes()[0].equals(Timestamp.class)) {
m.invoke(o, Timestamp.valueOf(requestName));
}
}
}
}
return o;
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
private String setLower(String s) {
StringBuilder builder = new StringBuilder(s);
String first = s.substring(0, 1).toLowerCase();
builder.setCharAt(0, first.charAt(0));
return builder.toString();
}
}
本文深入探讨了Servlet应用中如何通过HttpServletRequest获取参数,并利用反射机制将这些参数注入到bean实体中。以FormBeanVO为例,展示了如何实现参数到对象的映射过程。
1773

被折叠的 条评论
为什么被折叠?



