背景: 
经常要从request等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,麻烦  
一 参考资料 
http://jc-dreaming.iteye.com/blog/563893 
http://www.iteye.com/topic/76043 
http://xubindehao.iteye.com/blog/754807 
http://javafenger.iteye.com/blog/96829 
http://www.kaila.com.cn/space.php?uid=7114&do=blog&id=458578 
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对象)的更多相关文章

  1. js压缩xml字符串,将xml字符串转换为xml对象,将xml对象转换为json对象

    /** * 压缩xml字符串 */ function compressXmlStr(str){ var prefix, suffix; var i = str.indexOf("\r&quo ...

  2. C# 将object对象转换为实体对象

    C# 将object对象转换为实体对象.一共两种方法. 第一种方法,代码如下: /// <summary> /// 将object对象转换为实体对象 /// </summary> ...

  3. Rx编程的第一步是将native对象转换为monad对象

    Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性.

  4. jQuery对象转换为DOM对象(转)

    jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...

  5. 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象

    类数组对象的定义: 所谓"类数组对象"就是一个常规的Object对象,如$("div")但它和数组对象非常相似:具备length属性, 并以0.1.2.3……等 ...

  6. 实体模型集合对象转换为VO对象集合

    例如: 数据库中查出来的数据为 List<RptDayMonthTarget> List<RptDayMonthTarget> list = targetService.sel ...

  7. HashMap对象转换为JavaBean对象

    问题: 在日常代码中,使用 spring包中的 BeanUtils.copyProperties(source,target),可以将A对象的属性复制到B对象中,但是有个问题 无法将HashMap中的 ...

  8. jQuery对象转换为DOM对象

    第一种方法:借助数组下标来读取jQuery对象集合中的某个DOM元素对象. <script src="Scripts/jquery-1.4.1.js" type=" ...

  9. Ogbect对象转换为泛型对象

    相信很多人都自己写个这个转换的方法,再次附上我自己的写转换方法仅供参考. T t = BeanUtil.dbObject2Bean(obj, tClass); public static <T& ...

随机推荐

  1. 【python】三个变量互换值

    >>> x = 1>>> y = 2>>> z = 3>>> y3>>> z1 大写的帅字! (来自小甲鱼习题 ...

  2. Ogre实现简单地形

    利用SimpleRenderable实现DirectX 9 3D 游戏设计入门中 第十三章 地形渲染基础的简单地形,只是简单的实现了地形的基本框架,顶点,索引,纹理等,为简单起见高度都为1,适合新手做 ...

  3. Duplicate Symbol链接错的原因总结和解决方法-b

    duplicate symbol是一种常见的链接错误,不像编译错误那样可以直接定位到问题的所在.但是经过一段时间的总结,发现这种错误总是有一些规律可以找的.例如,我们有如下的最简单的两个类代码: // ...

  4. jquery - 通过点击切换文字内容

    今天要写一个简单的显示/隐藏效果,本以为是挺简单的事儿,没想到还真因为基本功不扎实遇到了问题,这里跟大家分享一下. 百度了很多方法,精简能用的干货实在太少,最后还是通过去查jq的官方api才找到了解决 ...

  5. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  6. #include<filename.h> 与 #include“filename.h”

    #include<filename.h>:从标准库路径去寻找该文件,对于VC来说,应该还包括VC环境设置选项中的包含目录以及工程属性中指定的目录. #include“filename.h” ...

  7. 移动应用产品开发-android开发项目记录

    今天主要在做app前端开发,做了一个资讯列表和资讯详情,主要模仿网易新闻来做,页面布局简单,但java代码和实现比较麻烦 毕竟才开始做,研究的不那么透彻,也不是很熟练 用心去做,专注开发,今天也算作出 ...

  8. UVA 1513 Movie collection

    #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 200010 #define l ...

  9. FFMPEG之TimeBase成员理解

    http://blog.csdn.net/supermanwg/article/details/14521869

  10. OA学习笔记-006-SPRING2.5与hibernate3.5整合

    一.为什么要整合 1,管理SessionFactory实例(只需要一个) 2,声明式事务管理 spirng的作用 IOC 管理对象.. AOP 事务管理.. 二.整合步骤 1.整合sessionFac ...