Request To JavaBean(请求对象转换为JavaBean对象)
背景:
经常要从request等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,麻烦
一 参考资料
1 http://jc-dreaming.iteye.com/blog/563893
2 http://www.iteye.com/topic/76043
3 http://xubindehao.iteye.com/blog/754807
4 http://javafenger.iteye.com/blog/96829
5 http://www.kaila.com.cn/space.php?uid=7114&do=blog&id=458578
6 http://blog.csdn.net/zsx923/archive/2010/01/19/5210325.aspx
二 代码示例
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils; public class RequestToBean { /**
* ConvertUtilsBean convertUtils = new ConvertUtilsBean();
* DateConverter dateConverter = new DateConverter();
* convertUtils.register(dateConverter,Date.class);
* */ /**
* @param <T>
* @param newSource 现将要设置新值的对象
* @param source 源数据对象
*/
public static <T> void beanConvert(T newSource,T source){
try {
BeanUtils.copyProperties(newSource,source);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} /**
* @param request 请求对象
* @param obj 要设置Bean的类型,传入试为: Bean.class
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T getBeanToRequest(HttpServletRequest request,Class<T> clazz){ //获取页面所有的请求参数名称
Enumeration<String> enume = request.getParameterNames();
T beanObj = getObjectByClass(clazz);
try{
while(enume.hasMoreElements()){
//参数名称
String propertyName = enume.nextElement();
//判断是否存在此属性
if(isCheckBeanExitsPropertyName(clazz,propertyName)){
//获取请求值
Object propertyValue = request.getParameter(propertyName);
setProperties(beanObj,propertyName,propertyValue);
} }
}catch(Exception e){} return beanObj;
} private static <T> T getObjectByClass(Class<T> clazz){
T t = null;
try {
t = clazz.newInstance();
} catch (InstantiationException e1) {
e1.printStackTrace();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
}
return t;
} /**
* @param clazz Class对象
* @param propertyName 属性名称
* @return true || false 检查对象中是否存在该属性名称
*/
private static boolean isCheckBeanExitsPropertyName(Class<?> clazz,String propertyName){
boolean retValue = false;
try {
Field field = clazz.getDeclaredField(propertyName);
if(null != field){
retValue = true;
}
} catch (NoSuchFieldException e) {
Out.println("类: " + clazz.getSimpleName()+",不存在属性名: "+propertyName+" ,详细错误信息: "+e.getMessage());
}
return retValue; } /**
* 设置字段值
* @param obj 实例对象
* @param propertyName 属性名
* @param value 新的字段值
* @return
*/
public static void setProperties(Object object, String propertyName,Object value) throws IntrospectionException,
IllegalAccessException, InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(propertyName,object.getClass());
Method methodSet = pd.getWriteMethod();
methodSet.invoke(object,value);
}
}
三 使用common beanutils组件
代码:
User user = new User();
BeanUtils.populate(user,request.getParameterMap());
Request To JavaBean(请求对象转换为JavaBean对象)的更多相关文章
- js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象
/** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...
- C# 将object对象转换为实体对象
C# 将object对象转换为实体对象.一共两种方法. 第一种方法,代码如下: /// <summary> /// 将object对象转换为实体对象 /// </summary> ...
- Rx编程的第一步是将native对象转换为monad对象
Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性.
- jQuery对象转换为DOM对象(转)
jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...
- 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象
类数组对象的定义: 所谓"类数组对象"就是一个常规的Object对象,如$("div")但它和数组对象非常相似:具备length属性, 并以0.1.2.3……等 ...
- 实体模型集合对象转换为VO对象集合
例如: 数据库中查出来的数据为 List<RptDayMonthTarget> List<RptDayMonthTarget> list = targetService.sel ...
- HashMap对象转换为JavaBean对象
问题: 在日常代码中,使用 spring包中的 BeanUtils.copyProperties(source,target),可以将A对象的属性复制到B对象中,但是有个问题 无法将HashMap中的 ...
- jQuery对象转换为DOM对象
第一种方法:借助数组下标来读取jQuery对象集合中的某个DOM元素对象. <script src="Scripts/jquery-1.4.1.js" type=" ...
- Ogbect对象转换为泛型对象
相信很多人都自己写个这个转换的方法,再次附上我自己的写转换方法仅供参考. T t = BeanUtil.dbObject2Bean(obj, tClass); public static <T& ...
随机推荐
- 第一个CUDA程序
开始学CUDA 先写一个简单的 #include<iostream>__global__ void add( int a, int b, int *c ) { *c = a + b;}in ...
- kill -9杀掉nginx主进程、reload失败解决办法
前言: 无意间使用 kill -9 命令杀掉了nginx的主进程,当我再次使用 ./nginx -s reload 重新刷新nginx的时候,一直出现了下面的错误信息: nginx: [alert] ...
- Hbase案例分析(二)
情景1:
- Logstash同步Oracle数据到ElasticSearch
最近在项目上应用到了ElasticSearch和Logstash,在此主要记录了Logstash-input-jdbc同步Oracle数据库到ElasticSearch的主要步骤,本文是对环境进行简单 ...
- 【USACO 2012 Open】Running Laps(树状数组)
53 奶牛赛跑 约翰有 N 头奶牛,他为这些奶牛准备了一个周长为 C 的环形跑牛场.所有奶牛从起点同时起跑,奶牛在比赛中总是以匀速前进的,第 i 头牛的速度为 Vi.只要有一头奶牛跑完 L 圈之后,比 ...
- 【BZOJ 3122】 [Sdoi2013]随机数生成器 (BSGS)
3122: [Sdoi2013]随机数生成器 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1442 Solved: 552 Description ...
- 记录一下MYSQL的SQL语法
这是加时间的语法 update mylog set mydate= DATE_ADD( mydate, INTERVAL 13 HOUR) WHERE mydate BETWEEN '2014-0 ...
- logstash date插件
[elk@dr-mysql01 api-access]$ date Wed Nov 30 19:21:35 CST 2016 [elk@dr-mysql01 api-access]$ [elk@dr- ...
- Eclipse中如何恢复已删除文件
[转自] http://zhangjunhd.blog.51cto.com/113473/23092
- hadoop2.2编程: Interation
继承关系: 1.java.lang.Object |_ org.apache.hadoop.io.BinaryComparable |_ org.apache.hadoop.io.Text //des ...