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& ...
随机推荐
- python从socket做个websocket的聊天室server
下面的是server端:把IP改成自己的局域网IP: #coding:utf8 import socket,select import SocketServer import hashlib,base ...
- Python学习_列表推导和Lambda表达式
列表推导目的是减少将一个列表转换为另一个列表时所需编写的代码量,其功能也能用列表迭代完成 1.根据要求创建列表threes_and_fives(列表值包括1到15中能够被3或者5正常的数) three ...
- 监听div内容改变
做前端突击队,外星人那道是自己手动模拟那个时间的变化的,但正确思路应该是监听div内容的变化然后同步到输入框中,遂今天找了一下,结果如下: $('div').bind('DOMNodeInserted ...
- Javascript 备忘
1遍历所有属性 var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=tx ...
- (转) 各种好用的插件 Xcode
时间就是金钱.编码效率的提升意味着更多的收入.可是当我们的开发技巧已经到达一定高度时,如何让开发效率更上一层楼呢?答案就是使用开发工具!在这篇文章中,我会向你介绍一些帮助我提升编码速度和工作效率的工具 ...
- 使用自定义《UIActivity》进行内容分享-b
简介 这段时间有很多朋友都问我关于怎么去集成ShareSDK或者友盟社会化分享SDK的问题, 其实我想说, Apple一开始就提供了一个类, 供我们去使用分享了, 在iOS 6之后更加增强了这个类, ...
- Nopcommerce 3.7 增加了Redis 作为缓存啦
Nopcommerce 3.7 版增加了Redis 缓存,相比之前内存缓存, 感觉使用了Redis 作为缓存,明显加快了Web页面响应速度! 废话少说 拉代码: 1 git clone https: ...
- android app修改包名
change package nameA.使用到得工具 notepad++,everything搜索工具(C:\Users\Administrator\Desktop\MusicScanResu ...
- 工作总结:文件对话框的分类(C++)
原文地址:http://www.jizhuomi.com/software/173.html 文件对话框分为打开文件对话框和保存文件对话框,相信大家在Windows系统中经常见到这两种文件对话框.例如 ...
- Http协议Get方式获取图片
一. 二. 我试了试,Post方式也行啊,干嘛要叫强调Get方式,费解~~ 答曰:get是向服务器请求数据,p ...