- 浏览: 379877 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (107)
- Linux (2)
- WebService (4)
- Java基础 (18)
- 优秀博客文章 (6)
- 面试 (2)
- 视频 (1)
- 开源软件 (7)
- DOS命令、批处理 (2)
- SSH Mybatis (11)
- MQ (3)
- 个人开发者 (1)
- 设计模式 (2)
- 博客 (1)
- 缓存 (1)
- 数据库 (10)
- 工具软件 (9)
- Tomcat (3)
- 网络 (2)
- XML 、JSON (1)
- OSGI (1)
- 算法 (1)
- 计算机基础、网络 (1)
- Web 开发 (3)
- 程序人生 (1)
- Servlet基础 (1)
- 英语 (1)
- 临时、未分类 (4)
- 网路、word使用技巧 (2)
- Java性能优化 (0)
最新评论
-
360pluse:
使用apache ActiveMQ深入企业级程序设计网盘地址: ...
Active MQ技术文章(JMS) -
星辰海:
问下,像TimerTask一旦抛异常,就永远不执行了,这种情况 ...
spring学习系列 -- 定时器三 两种定时器的比较 -
360pluse:
使用apache ActiveMQ深入企业级程序设计百度网盘: ...
Active MQ技术文章(JMS) -
xj56ai:
能不能 提供一下 包
Spring 学习系列 -- Spring + Mybatis 从零开始配置多数据源访问 -
wejack639:
写的很好,很有用,谢谢
spring学习系列 -- 定时器三 两种定时器的比较
0 包
org.apache.commons.beanutils
org.apache.commons.beanutils.converters
org.apache.commons.beanutils.locale
org.apache.commons.beanutils.locale.converters
1 基础类
Order
public class Order { private User user; private Integer id; private String desc; public User getUser() { // setter/getter }
User
public class User { private Integer id; private Map map; private String username; // setter/getter }
测试类Test
public class Test { private User user = new User(); private Order order1 = new Order(); private Order order2 = new Order(); private Order order3 = new Order(); private Map map = new HashMap(); private User user1 = new User(); public Test(){ init(); } //初始化 public void init(){ user.setId(0); user.setUsername("zhangshan"); order1.setId(1); order1.setDesc("order1"); order1.setUser(user); order2.setId(2); order2.setDesc("order2"); order2.setUser(user); order3.setId(3); order3.setDesc("order3"); order3.setUser(user); map.put("order1", order1); map.put("order2", order2); map.put("order3", order3); user1.setId(1); user1.setUsername("lisi"); user1.setMap(map); } }
2 测试代码
测试代码写在Test的main函数中:
Test test = new Test(); ... ...
a 获取对象的属性
System.out.println(BeanUtils.getProperty(test.user, "username"));
b 获取对象的内嵌属性
//输出某个对象的内嵌属性,只要使用点号分隔 System.out.println(BeanUtils.getProperty(test.order1, "user.username"));
c 获取List和Map的属性
//BeanUtils还支持List和Map类型的属性,对于Map类型,则需要以"属性名(key值)"的 //对于Indexed,则为"属性名[索引值]",注意对于ArrayList和数组都可以用一样的方式进行操作 System.out.println(BeanUtils.getProperty(test.user1, "map(order2).desc"));
d 拷贝对象
//拷贝对象的属性值 User tempUser = new User(); BeanUtils.copyProperties(tempUser, test.user1); System.out.println(tempUser.getUsername()); System.out.println(tempUser.getId());
e 动态排序
// 动态设定Bean按照哪个属性来排序,而不再需要再实现bean的Compare接口进行复杂的条件判断 List<Order> list = new ArrayList<Order>(); list.add(test.order2); list.add(test.order1); list.add(test.order3); //未排序前 for(Order order : list){ System.out.println(order.getId()); } //排序后 Collections.sort(list, new BeanComparator("id")); for(Order order : list){ System.out.println(order.getId()); }
//:支持多个属性的复合排序 ; 如"Order By id,desc"
List sortFields = new ArrayList();
sortFields.add(new BeanComparator("id"));
sortFields.add(new BeanComparator("desc"));
ComparatorChain multiSort = new ComparatorChain(sortFields);
Collections.sort(list, multiSort);
for(Order order : list){
System.out.println(order.getId());
}
// C:使用ComparatorUtils进一步指定排序条件 // 上面的排序遇到属性为null就会抛出异常, 也不能设定升序还是降序。 // 不过,可以借助commons-collections包的ComparatorUtils // BeanComparator,ComparableComparator和ComparatorChain都是实现了Comparator这个接口 // java 代码 //上面的排序遇到属性为null就会抛出异常, 也不能设定升序还是降序。 //不过,可以借助commons-collections包的ComparatorUtils //BeanComparator,ComparableComparator和ComparatorChain都是实现了Comparator这个接口 Comparator mycmp = ComparableComparator.getInstance(); mycmp = ComparatorUtils.nullLowComparator(mycmp); //允许null mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序 Comparator cmp = new BeanComparator("id", mycmp); Collections.sort(list, cmp); for(Order order : list){ System.out.println(order.getId()); }
f Converter 把Request或ResultSet中的字符串绑定到对象的属性
从request,resultSet等对象取出值来赋入bean中
MyBean bean = ...; HashMap map = new HashMap(); Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); map.put(name, request.getParameterValues(name)); } BeanUtils.populate(bean, map);
3 API
BeanUtils: JavaBean克隆及属性拷贝
static Object cloneBean(Object bean) : 获取拷贝对象属性 static void copyProperties(Object dest, Object orig):拷贝对象 static void copyProperty(Object bean, String name, Object value):拷贝对象的属性 static Map describe(Object bean) ://用来将一个bean以map的形式展示 static void populate(Object bean, Map properties) : //使用一个map为bean赋值 // Simple:简单类型,如String、Int......: static void setProperty(Object bean, String name, Object value) ; static String getProperty(Object bean, String name) : 属性值 // Indexed:索引类型,如数组、arrayList......: static String getIndexedProperty(Object bean, String name) static String getIndexedProperty(Object bean, String name, int index) // Maped:即Map,比如HashMap...... : static static String getMappedProperty(Object bean, String name, String key) static String getMappedProperty(Object bean, String name)
// 设置获取属性值: //1:获取Indexed值 BeanUtils.getIndexedProperty(orderBean,"items",1); // 或者 BeanUtils.getIndexedProperty(orderBean,"items[1]"); // 2:Maped:即Map,比如HashMap...... : BeanUtils.getMappedProperty(orderBean, "items","111");//key-value goods_no=111 // 或者 BeanUtils.getMappedProperty(orderBean, "items(111)") // 3: 获取内嵌类的属性值和Simple类: BeanUtils.getProperty(test.order1, "user.username")
PropertyUtils:JavaBean属性拷贝
和BeanUtils类很多的方法在参数上都是相同的,但返回值不同。
BeanUtils着重于属性,它的返回值通常是Object
// 复制对象 static void copyProperties(Object dest, Object orig) // set、get对象的属性 static void setProperty(Object bean, String name, Object value) static Object getProperty(Object bean, String name) // 获取对象属性的类型:如果属性不存在,则为null static Class getPropertyType(Object bean, String name) // 以map返回bean的值 static Map describe(Object bean) // set、get的数组和列表的值 static Object getIndexedProperty(Object bean, String name) static Object getIndexedProperty(Object bean, String name, int index) static void setIndexedProperty(Object bean, String name, int index, Object value) static void setIndexedProperty(Object bean, String name, Object value) // set、get的map的属性 static Object getMappedProperty(Object bean, String name) static Object getMappedProperty(Object bean, String name, String key) static void setMappedProperty(Object bean, String name, Object value) static void setMappedProperty(Object bean, String name, String key, Object value)
注意:BeanUtils与PropertyUtils的区别
BeanUtils对Bean赋值是会进行类型转化。举例来说也就是在copyProperty只要属性名相同,就算类型不同,BeanUtils也可以进行copy:而PropertyBean则可能报错。
ConverUtils:类型转换
MethodUtils:JavaBean方法调用,动态调用方法,得到方法,主要方法有:
// 动态调用方法 static Object invokeMethod(Object object, String methodName, Object arg) static Object invokeMethod(Object object, String methodName, Object[] args) static Object invokeMethod(Object object, String methodName, Object[] args, Class[] parameterTypes) // 得到方法 static Method getAccessibleMethod(Class clazz, Method method) static Method getAccessibleMethod(Class clazz, String methodName, Class parameterType) static Method getAccessibleMethod(Class clazz, String methodName, Class[] parameterTypes) static Method getAccessibleMethod(Method method)
ConstructorUtils:构造Bean对象
这个类中的方法主要分成两种,一种是得到构造方法,一种是创建对象
// 获取动态构造器 static Constructor getAccessibleConstructor(Class klass, Class parameterType) static Constructor getAccessibleConstructor(Class klass, Class[] parameterTypes) static Constructor getAccessibleConstructor(Constructor ctor) // 调用构造器 static Object invokeConstructor(Class klass, Object arg) static Object invokeConstructor(Class klass, Object[] args) static Object invokeConstructor(Class klass, Object[] args, Class[] parameterTypes)
ConvertUtils:将字符串转换为指定类型
// 转换为字符串 static String convert(Object value) //将任意的实例转换为String // 将字符串value转换为clazz的一个实例:如果失败的话,就以String的形式返回value static Object convert(String value, Class clazz) static Object convert(Object value, Class targetType) // 将数组中每个value都进行转换,最好以Object返回 static Object convert(String[] values, Class clazz)
BasicDynaBean:
LazyDynaBean:
发表评论
-
Java研究 -- Jdk获取本地计算机名称的一个Bug
2012-08-31 14:15 3280通过Java1.6的jdk获取中文计算机名称时,存在一 ... -
java基础 -- java自带exe
2012-08-29 08:33 966Java.exe 执行类: java ... -
java基础 -- IO、NIO
2012-08-25 09:32 794IO参考文献 NIO参考文献 ... -
java基础 -- 乱码
2012-08-24 13:55 830BufferedReader读取utf-8文件(html ... -
java基础 -- 注释
2012-08-24 13:37 779参考文献 J2SE5中的最新注 ... -
Swing学习系列 -- Swing读书笔记目录
2012-07-28 14:54 1203为了便于二次查找,学习,特列出Swing的目录如下 ... -
Java核心多线程 -- 消费者生产者Demo一
2012-07-28 13:11 1780目的 实现1个生产者和多个消费者合作工作的模式 手段 ... -
Java技术文章
2012-07-03 22:21 1099java虚拟机 java.lang.OutOf ... -
Java正则表达式
2012-06-21 13:27 1227参考文献: 1. 大名鼎鼎的《正则表达式3 ... -
Java调用外部文件
2012-06-19 18:25 1464Demo 涉及到执行外部函数时的环境变量 使用 ... -
Java基础内容技术文章
2012-06-19 13:54 953内存、引用 浅析Java的“克 ... -
Tomcat 加载jar包的顺序
2012-06-16 12:45 13826实验目的 2个jar包中,各有一个类名完全相同 ... -
Java内存的技术文章
2012-06-07 18:43 903java.lang.OutOf ... -
java打包成exe
2012-05-30 13:36 1106目录结构 jar -- config 配置文件 ... -
Java关键字
2012-05-23 22:20 796transient 变量 ... -
枚举学习
2012-05-01 13:34 10261 枚举的应用 存储每周中的天份 /** * 枚举的应 ... -
Java性能
2012-04-30 02:04 1070Java编程中“为了性能 ...
相关推荐
BeanUtil框架是一个在Java开发中常用的工具库,主要用于对象属性的获取、设置、拷贝以及类型转换等操作。它的设计目标是简化Java Bean...但在使用时,开发者也需要了解其工作原理和潜在的问题,以便更好地应用和维护。
本文将深入探讨BeanUtil的使用、功能及其在反射技术中的应用。 首先,我们需要理解JavaBeans。JavaBeans是一种符合特定规范的Java类,主要用于数据封装和组件开发。它们通常具有公有无参数构造器、公有的getter和...
本文将深入探讨BeanUtil_Jar包的核心特性和使用方法,帮助开发者更好地理解和应用这个经典库。 首先,让我们了解什么是JavaBean。JavaBean是一种符合特定规范的Java类,通常用来封装数据并提供公共方法来访问这些...
《BeanUtil1.8源码与jar包...在实际开发过程中,掌握BeanUtil的使用不仅可以提升开发效率,还能更好地理解和应用Java Bean的设计模式。无论是作为开发工具,还是学习资料,BeanUtil1.8都是Java开发者不可或缺的资源。
在MySQL方面,MySQL是一种关系型数据库管理系统,广泛应用于Web应用中,因为它性能高效、稳定性强且易于使用。DDL语句用来定义数据库的结构,如创建、修改和删除表。DML语句则用于操纵数据库中的数据,包括INSERT...
1. **BeanUtil的应用**: - **属性赋值**:BeanUtils的`copyProperties()`方法可以方便地将一个对象的属性值复制到另一个对象,这对于数据传输对象(DTO)的转换非常有用。 - **反射操作**:`BeanUtils....
本文将深入探讨BeanUtil工具类的工作原理以及如何在Servlet中使用它。 首先,让我们理解一下JavaBean的概念。JavaBean是一种遵循特定规范的Java类,主要用于封装数据。它通常具有公有构造器、公有getter和setter...
"beanutil的jar包打包" 指的是将Apache Commons BeanUtils相关的类库打包成一个或多个JAR(Java Archive)文件。BeanUtils是Java开发中常用的工具包,它提供了对Java Bean操作的各种便利方法,如属性的设置与获取,...
标题提到的“简单的jsp项目需要的jar包”是指为了构建一个基础的JSP(Java Server Pages)应用程序,所必需的一些Java库文件。这些jar包包括了数据库连接、模板处理、前端交互以及数据管理等多个方面的组件。其中,...
在实际应用中,"用fileupload实现jsp上传功能"涉及到以下步骤: 1. 添加Apache Commons FileUpload和Commons IO的依赖库。 2. 创建一个Servlet或Filter来处理文件上传请求。 3. 配置Servlet以接收多部分数据。 4. ...
【标题】中的"dom4j jstl beanUtil log4j等jar包"涉及了四个重要的Java库,它们在开发Java应用程序,特别是Web应用时非常常见。下面将逐一详细介绍这些库的功能、用途以及如何在项目中使用它们。 1. **DOM4J**:这...
Apache BeanUtils是Apache软件基金会开发的一个Java库,主要用于简化Java Bean对象之间的属性操作。...通过阅读API文档和实践使用,开发者可以更好地掌握这一强大的库,并将其应用到自己的项目中。
在Java应用中,JavaBean扮演着数据载体的角色,BeanUtils则提供了对这些载体进行操作的工具。 Apache Commons BeanUtils库包含的核心功能有: 1. **属性复制(Property Copying)**:BeanUtils最著名的功能就是...
在实际应用中,文件上传的流程大致如下: 1. **初始化**:配置`FileUpload`,设置允许的最大文件大小、临时目录等。 2. **解析请求**:使用`ServletFileUpload`检查请求是否是文件上传请求,并解析出`FileItem`实例...
这个压缩包包含了BeanUtils的核心组件`commons-beanutils-1.8.3.jar`以及其依赖的`commons-logging-1.1.1.jar`,这两个Jar包在Java开发中具有广泛的应用。 首先,`commons-beanutils-1.8.3.jar`是BeanUtils的主要...
本篇文章将深入探讨Java匿名内部类的使用规范,帮助你更好地理解和应用这一特性。 首先,理解匿名内部类的基本概念。匿名内部类没有名字,它不能被其他类直接引用,但可以作为局部变量、成员变量或者方法参数。它...
在这个示例代码中,提供了一个BeanUtil类,该类提供了多个静态方法,用于生成sql语句。这些方法包括getBeanName、getBeanPropertyList、getBeanFilesList等。这些方法使用了Java反射机制来获取JavaBean对象的信息,...
在实际应用中,`AjaxResponse.java`可能定义如下: ```java public class AjaxResponse<T> { private int code; // 响应状态码 private String message; // 响应消息 private T data; // 响应数据 // 构造方法...
它还提供了类型转换器,简化了数据类型转换的过程,避免了像Struts1中需要注册BeanUtil的繁琐步骤。 Struts2支持多种视图技术,如JSP、FreeMarker和Velocity,这为开发者提供了更大的灵活性。在表单验证方面,...
5. **重启服务**:完成修改后,重启服务以应用新的配置。 总之,解决“消息队列监听器无法注入bean”的问题需要从配置、代码和依赖注入等多个角度进行排查。在实际操作中,务必细心检查每一个环节,以确保所有组件...