把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to
public static Object convertBean2Bean(Object from, Object to) {
try {
BeanInfo beanInfo = Introspector.getBeanInfo(to.getClass());
PropertyDescriptor[] ps = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor p : ps) {
Method getMethod = p.getReadMethod();
Method setMethod = p.getWriteMethod();
if (getMethod != null && setMethod != null) {
try {
Object result = getMethod.invoke(from);
setMethod.invoke(to, result);
} catch (Exception e) {
// 如果from没有此属性的get方法,跳过
continue;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return to;
}
/**
* 不支持to继承(to是其他bean的子类)
*/
public static Object coverBean2Bean(Object from, Object to) {
Class fClass = from.getClass();
Class tClass = to.getClass();
// 拿to所有属性(如果有继承,父类属性拿不到)
Field[] cFields = tClass.getDeclaredFields();
try {
for (Field field : cFields) {
String cKey = field.getName();
// 确定第一个字母大写
cKey = cKey.substring(0, 1).toUpperCase() + cKey.substring(1);
Method fMethod;
Object fValue;
try {
fMethod = fClass.getMethod("get" + cKey);// public方法
fValue = fMethod.invoke(from);// 取getfKey的值
} catch (Exception e) {
// 如果from没有此属性的get方法,跳过
continue;
}
try {
// 用fMethod.getReturnType(),而不用fValue.getClass()
// 为了保证get方法时,参数类型是基本类型而传入对象时会找不到方法
Method cMethod = tClass.getMethod("set" + cKey, fMethod.getReturnType());
cMethod.invoke(to, fValue);
} catch (Exception e) {
// 如果to没有此属性set方法,跳过
continue;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return to;
}
static final String spare = "======================================================\r\n";
/** * 打印bean信息
*/
public static void printInvoke(Object object) {
Method[] ms = object.getClass().getMethods();
String str = spare;
str += "start log object: " + object.getClass().getSimpleName() + "\r\n";
str += spare;
System.out.print(str);
for (int i = 0; i < ms.length; i++) {
if (ms[i].getName().indexOf("get") != -1
&& !ms[i].getName().equals("getClass")) {
try {
System.out.println(ms[i].getName() + " = "
+ ms[i].invoke(object));
} catch (Exception e) {
e.printStackTrace();
}
}
}
System.out.println(spare);
}
分享到:
相关推荐
另一个是要填充的JavaBean对象。 1. **方法签名**:`public static void setFormBean(HttpServletRequest request, Object bean)`。 2. **反射获取方法**:使用`getMethods()`获取JavaBean的所有公共方法。 3. **...
`BeanUtils.populate()`方法将Map中的数据自动赋值给了`user`对象。 在实际开发中,Apache Commons BeanUtils库提供了BeanUtil工具类。你可以在项目中引入这个库,然后就可以使用`BeanUtils`类提供的方法。当然,...
总结,表单为JavaBean赋值是Java Web开发中的常见操作,涉及HTML表单、HTTP请求处理、JavaBean以及可能的框架支持。熟练掌握这一过程对于构建交互式的Web应用至关重要。同时,了解和运用水印技术可以增强对数字资产...
例如,如果我们有一个前端传来的JSON字符串,可以先将其转化为Java对象,然后利用`BeanUtils.copyProperties()`将这个对象的属性赋值给对应的JavaBean实例。 ```java String jsonString = "{'name':'张三', 'age':...
例如,Angular的`ngModel`指令可以将表单字段与模型对象关联,提交时自动转换为JSON发送给服务器。 5. **错误处理**: 自动封装过程中可能会出现数据类型不匹配、必填项缺失等错误。框架通常会提供异常处理机制,...
它实际上是一个满足特定条件的Java对象,具体包括以下特点: - **可序列化(Serializable)**:这使得JavaBean可以被持久化,并在网络上传输。 - **具有无参构造函数**:这是JavaBean的基本要求之一,确保可以通过...
- 具有一个无参构造函数。 - 属性私有化,提供getter和setter方法进行访问控制。 - 可选:实现Serializable接口以支持序列化。 JavaBean在Java应用程序和Web开发中广泛使用,作为数据传输对象(DTO)或模型对象...
例如,如果我们有一个简单的User对象,可以这样定义: ```java public class User { private String name; private int age; public User() {} public String getName() { return name; } public void ...
在`User.java`中,我们定义了一个JavaBean类,它代表了一个用户对象。这个类有两个私有属性:`userName`和`userPass`,分别对应用户的用户名和密码。JavaBean通常包含getter和setter方法,用于访问和修改这些属性的...
总之,"javabean留言小项目"是一个实践JavaBean基本特性和功能的实例,它展示了如何使用JavaBean封装数据并进行数据交换,有助于加深对JavaBean的理解和应用。在实际开发中,JavaBean是构建可复用、模块化组件的重要...
这个方法通常接收一个XML字符串作为参数,并根据预先定义的映射规则,解析XML中的元素和属性,将其赋值给JavaBean的对应属性。映射规则可以是硬编码的,也可以通过注解或其他配置文件来指定。一旦解析完成,`fromXml...
总之,JavaBean 是一个非常适合初学者学习的概念,它不仅有助于理解面向对象编程的基本原理,而且对于日后从事 Java 应用程序开发工作也大有裨益。通过深入学习 JavaBean 的概念、特点以及应用场景,可以帮助开发者...
在JavaBean规范中,一个JavaBean是一个公共的Java类,具备特定的结构和行为。 **JavaBean基础知识** 1. **什么是组件?** 组件是软件开发中的一个概念,它代表一个具有独立功能的单元,可以被其他程序或系统使用。...
JavaBean是Java编程语言中的一个组件,符合JavaBeans规范的类。它具有良好的封装性,通常有公有的构造器,私有的属性,以及用于访问这些属性的getter和setter方法。此外,JavaBean还需要满足序列化,即实现...
4. `<jsp:setProperty>`:设置JavaBean属性的值,通常与`<jsp:useBean>`配合使用,用于给JavaBean的属性赋值。 5. `<jsp:getProperty>`:用于获取JavaBean的属性值并将其显示在页面上。 二、中文乱码问题 在处理...
例如,使用EL将请求参数赋值给JavaBean: ```jsp user.setUsername(request.getParameter("username")); user.setPassword(request.getParameter("password")); %> ``` 此外,JavaBean还可以配合BeanUtils工具...
通过迭代ResultSet,我们可以调用setter方法将每一行数据赋值给JavaBean的属性。 4. **CRUD操作**:JavaBean也可以帮助我们实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据库记录。例如,...
对象复制是指将一个对象的属性值复制到另一个对象的过程,通常用于创建新对象或者初始化对象。`BeanUtilsBean.copyProperties()`方法是实现此功能的关键,它允许我们将一个JavaBean的所有属性值复制到另一个具有相同...
2. **复制属性**:`copyProperties()`方法允许你将一个JavaBean的所有属性复制到另一个JavaBean,这在对象初始化或对象克隆场景中非常有用。 3. **反射操作**:BeanUtils库利用Java的反射机制,能够在运行时动态地...
我们可以通过`request.getParameter()`方法获取到这些参数,并将它们赋值给JavaBean对象: ```jsp UserBean user = new UserBean(); user.setUsername(request.getParameter("username")); user.setPassword...