本文查阅方法:
1、查阅目录 —— 查阅本文目录,确定想要查阅的目录标题
2、快捷“查找” —— 在当前浏览器页面,按键 “Ctrl+F” 按键组合,开启浏览器的查找功能,
在查找搜索框中 输入需要查阅的 目录标题,便可以直接到达 标题内容 的位置。
3、学习小结 —— 文中的学习小结内容,是笔者在学习之后总结出的,开发时可直接参考其进行应用开发的内容, 进一步加快了本文的查阅 速度。(水平有限,仅供参考。)
本文目录
学习小结
1、JavaBean属性操作—beanutils工具包
2、BeanUtils 使用方法——直接使用 API 中 定义静态方法
3、ConvertUtils 使用方法
4、Demo样例
学习小结
使用BeanUtils的步骤:
a.导包——导入两个Jar包commons-beanutils-1.8.3.jar 和支持包commons-logging-1.1.1.jar
b.操作——直接使用其定义的静态方法操作Bean的属性(具体方法可查阅其文档)
(a)给指定Bean的属性赋值 ——
BeanUtils.setProperty(Object 目标bean, String 指定属性的name, Object 实际参数值value)
(b)获取指定Bean的属性赋值 ——
BeanUtils.getProperty(Object 目标 bean, String 指定属性的 name)
(c)将Map中的“键值对”数据 全部填充到指定的 JavaBean(对应属性名)中 ——
BeanUtils.populate(Object 目标 bean, Map 存储有源数据的 map 对象);
c.注册转换器——自动类型转换,除8种基本类型外,其他复杂类型要事先注册类型转换器(API或自定义)
1、JavaBean属性操作—beanutils工具包
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写。
导入包:a.在工程下新建lib目录,导入commons-beanutils-1.8.3.jar 和支持包commons-logging-1.1.1.jar
b.选中两个包,右键build path/add to build path
Beanutils工具包的常用类:
BeanUtils —— 操作JavaBean 中的属性 赋值与取值。
PropertyUtils
ConvertUtils —— 操作类型转换器。
自定义转换器:ConvertUtils.regsiter(Converter convert, Class clazz)
2、BeanUtils 使用方法——直接使用 API 中 定义静态方法
a.给指定Bean的属性赋值 ——
BeanUtils.setProperty(Object 目标bean, String 指定属性的name, Object 实际参数值value)
备注:仅支持 8中基本类型数据 自动转换 :字符串-- 属性类型
其他复杂类型的 自动转换,需要实现 注册 类型转换器Converter。
b.获取指定Bean的属性赋值 ——
BeanUtils.getProperty(Object 目标 bean, String 指定属性的 name)
c.将Map中的“键值对”数据 全部填充到指定的 JavaBean(对应属性名)中
BeanUtils.populate(Object 目标 bean, Map 存储有源数据的 map 对象);
备注:使用该方法时,须确保Map中键名称 与 Bean中 属性名称 是相同的,否则就会 赋值为 null 。
3、ConvertUtils 使用方法
1、注册转换器 —— ConvertUtils.regsiter(Converter 转换器convert, Class 目标类型clazz)
备注:参数“转换器convert”,既可以用BeanUtils中自带的转换器,亦可以用自定义的类型转换器。
2、自定义转换器(可使用匿名内部类的写法,直接在 编码中 书写)
new Converter (){ // 下面是自定义的类型转换器。
public Object convert(Class type, Object value) {
//自定义的 实现类型转换的内容代码
}
}
4、Demo样例:
//使用beanUtils操纵bean的属性 ( 第三方)
public class Demo1 {
@Test
public void test1() throws Exception{
Person p=new Person();
BeanUtils.setProperty(p, "age", 456);
System.out.println(p.getAge());//456
}
@Test
public void test2() throws Exception{
String name="aaaa";
String age="123";
String password="pw";
Person p=new Person();
//支持8种基本类型自动转换,其他复杂类型的 转换,需要 编写 并且注册类型转换器,最常见的日起类型的 转换器。
BeanUtils.setProperty(p, "name", name);
BeanUtils.setProperty(p, "age", age);
BeanUtils.setProperty(p, "password", password);
System.out.println(p.getName());//aaaa
System.out.println(p.getAge());//123
System.out.println(p.getPassword());//pw
}
@Test
public void test3() throws Exception{
String birthday="1983-12-1";
//为了让日期赋值到bean的birthday属性上,需要在 beanUtils中 注册一个日期转换器,以便在需要转换时自动调用。可查 BeanUtil 的文档。
//ConvertUtils.register(converter, clazz);
ConvertUtils.register(new Converter(){ // 下面是自定义的类型转换器。
public Object convert(Class type, Object value) {
if(value==null) return null;
if(!(value instanceof String)){
throw new ConversionException("只支持String类型的转换");//可查文档,此异常父类是RunnableTimeException
}
String str=(String)value;
if(str.trim().equals("")) return null;
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd",Locale.US);
try {
return df.parse(str); //此语句将会抛出异常,但是由于 子类不能抛出比父类更多的异常,所以只能catch
} catch (ParseException e) {
throw new RuntimeException(e); //抛出运行时异常并停止程序的执行,以便通知上层异常信息,
//并建议其修改代码,以期提高代码的严谨性。
}
}
}, Date.class);
Person p=new Person();
BeanUtils.setProperty(p, "birthday", birthday);//因上面注册了“字符串--日起类型” 的类型转换器,故此就不会报错异常了。
System.out.println(p.getBirthday());//pw
System.out.println("___"+BeanUtils.getProperty(p, "birthday"));
/*
关于转换器:BeanUtils已经为 Converter接口 编写很多的转换器,
可查阅文档中All Known Implementing Classes:中所提示的各种框架自带转换器。
注:其中DateLocalConverter转换器,是针对中文样式的,但是里面有Bug:当输入的字符串类型 的日期参数值为" "时,就会抛出异常,
可考虑在编码时避免传入" " 值,就可以直接使用该转换器
Demo: ConvertUtils.register(new DateLocalConverter(), Date.class);
仅需要 这一句代码 就可以实现中文样式的 “字符串--日期” 的类型转换器:
*/
}
public void test5() throws Exception {
Map map=new HashMap();
map.put("name", "aaa");
map.put("password", "123");
map.put("brithday", "1980-09-09");
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person p=new Person();
//用map集合填充bean属性,map关键字和bean属性要一致
BeanUtils.populate(p, map);
}
}
敬请评论
(1)若您觉得本文 有用处 —— 请留言评论,以坚定其他 IT童鞋 阅读本文的信心。
(2)若您觉得本文 没用处 —— 请留言评论,笔者将会改进不足,以便为大家整理更加好用的笔记。
相关推荐
JavaBean和BeanUtils工具类是Java开发中常用的技术,它们主要应用于对象属性的访问和操作。JavaBean是一种规范,用于创建可重用的组件,它的核心特点是在类中定义私有成员变量,并提供对应的getter和setter方法来...
Apache Commons BeanUtils 是一个强大的工具库,主要用于简化JavaBean的操作,极大地提高了开发效率。这个库提供了许多方便的方法,使得开发者可以便捷地对JavaBean的属性进行读取和设置,而无需手动编写大量的...
此外,JavaBean还可以配合BeanUtils工具类(如Apache Commons BeanUtils)进行属性的批量复制,提高代码的可读性和效率。 本教程的“JavaBean讲解(上)——代码+笔记”会进一步展示如何创建和使用JavaBean,通过具体...
JavaBean操作类的学习是Java程序员必备的技能之一,它涉及属性设置、获取、事件处理等基本概念。以下是对JavaBean及其操作的详细解释: 1. **JavaBean规范**: - **命名规则**:通常,JavaBean的类名应该以"Bean...
在"java学习笔记——javaweb之BeanUtils、EL、JSTL"这篇博客中,作者可能详细讲解了如何在Java Web开发中利用BeanUtils进行数据绑定,以及与EL(Expression Language)和JSTL(JSP Standard Tag Library)的集成。...
BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。beanUtils 可以便于对javaBean的属性、对象进行赋值,beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。
`BeanUtils`工具类是Apache Commons项目中的一个组件,它为Java开发提供了一种便捷的方式来操作JavaBean属性,极大地简化了使用反射API的工作。在Java编程中,JavaBean是一种遵循特定规则的对象,通常用于封装数据并...
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的时候居然错过。 1.属性的动态getter,setter 2....
总结来说,Java Web程序设计中,BeanUtils工具是一个强大的助手,它简化了JavaBean对象的操作,尤其是处理属性的读写。通过BeanUtils,开发者可以避免编写大量的getter和setter调用,从而更专注于业务逻辑的实现。在...
BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。 对于JavaBean,简单的来说,就是要有一个空参的构造器和对属性的getXXX方法和setXXX方法。 在由JDK提供的默认的API中,有java.beans包,里面有诸如...
Apache Commons BeanUtils是Java开发中一个非常实用的工具库,主要功能是简化JavaBean对象的操作。这个"beanutils的jar包"是1.93版本,它包含了对bean操作的各种方法,同时也集成了log包,方便开发者进行日志记录,...
BeanUtils是Apache Commons项目中的一个核心工具库,主要用于处理Java对象的属性操作,极大地简化了JavaBean之间的数据绑定和转换工作。在这个压缩包中,包含了BeanUtils的源码和对应的jar包,这使得开发者能够方便...
Apache Commons项目中的BeanUtils库提供了方便的工具类,简化了JavaBean的处理工作。本篇文章将深入探讨JavaBean、BeanUtils以及相关的编程知识点。 JavaBean是一种符合特定规范的Java类,主要用于数据封装和组件...
总结来说,`commons-beanutils-1.8.3.jar`和`commons-logging-1.1.1.jar`这两个库是Java开发中不可或缺的工具,它们分别解决了JavaBean操作的繁琐和日志管理的复杂性,提升了代码的可读性和项目的可维护性。...
总的来说,BeanUtils工具类大大简化了JavaBean的属性操作,提高了代码的可读性和开发效率。然而,由于其使用反射,所以在性能敏感的场景下可能会有所牺牲。在实际应用中,根据项目需求和性能要求,合理选择使用...
在Java开发中,BeanUtils-jar包扮演着重要的角色,它是Apache Commons项目中的一个模块,主要为开发者提供了方便、高效的JavaBean操作工具。这个jar包的核心功能是简化了JavaBean属性的设置、获取以及复制等操作,极...
commons-beanutils-1.8.0.jar beanutils.jar beanutils.jar工具包
在Java开发中,Apache Commons BeanUtils库是一个非常实用的工具,它提供了许多便捷的方法来处理JavaBean对象,包括属性的复制、设置和获取等。然而,就像标题所指出的,“使用BeanUtils操作属性的一个小坑”,在...
《BeanUtils:JavaBean操作利器》 在Java开发中,我们常常需要对JavaBean对象进行各种操作,如属性的设置、获取以及复制等。Apache Commons BeanUtils库正是为了解决这些问题而诞生的,它提供了简单易用的API,极大...
本项目为Apache Commons子项目——commons-beanutils的核心源码,专注于利用Java反射机制高效处理JavaBean属性。该项目结构丰富,包含331个文件,涵盖295个Java源文件、14个XML文件、5个文本文件等,旨在为Java开发...