- 浏览: 468227 次
- 性别:
- 来自: 青岛
文章分类
最新评论
-
此去经年雪123:
为啥生成的是乱码 你好
关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名 -
alonglw:
zxf0089216 写道1.为什么每次都是10001RSAK ...
关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名 -
zxf0089216:
1.为什么每次都是10001RSAKeyPair(" ...
关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名 -
dunhanson:
后台的测试main方法都能加密解密。前台加密后的密文交给后台解 ...
关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名 -
map612:
wula0010 写道仔细看了下,可以运行RSAUtil.ma ...
关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
commons项目主页:http://commons.apache.org/
Commons BeanUtils : http://commons.apache.org/components.html
BeanUtils就是其中的一个,用于处理JavaBeans。它利用Java的反射机制,从动态的生成对bean的getter和setter 的调用代码,到模拟创建一个动态的bean,等等。这个包看似简单,却是很多开源项目的基石:如在著名的Struts和Spring Framework中,我们都能找到BeanUtils的影子。大家猜猜看,有哪位名人是BeanUtils的作者之一?没错,就是Struts的创始人 Craig McClanahan。
BeanUtils最核心的好处在于:我们在编码时,并不需要知道我们处理的JavaBeans具体是什么类型,有哪些属性,这些信息是可以动态获 取的,甚至我们都可以不必去关心事实上是否存在这样一个具体的JavaBean类。我们只需要知道有一个JavaBean的实例,我们需要从中取得某个属 性,设定某个属性的值,或者仅仅是需要一个属性表。要做到这些,依靠Sun提供的JavaBean规范似乎找不到一个很直接的方式,除非硬编码,将 getXxxx()和setXxxx()直接写进我们的程序。但是这样就大大增加了代码的复杂度、耦合性和维护成本。还好Commons BeanUtils对这个问题提供了一种优雅的解决方案。
1.PropertyUtils
它支持三种类型的属性值-Simple,Indexed,Mapped
Simple属性访问方法
PropertyUtils.getSimpleProperty(Object bean, String name)
PropertyUtils.setSimpleProperty(Object bean, String name, Object value)
实现代码:
Employee employee = ...;
String firstName = (String)
PropertyUtils.getSimpleProperty(employee, "firstName");
String lastName = (String)
PropertyUtils.getSimpleProperty(employee, "lastName");
... manipulate the values ...
PropertyUtils.setSimpleProperty(employee, "firstName", firstName);
PropertyUtils.setSimpleProperty(employee, "lastName", lastName);
Indexed属性访问方法
PropertyUtils.getIndexedProperty(Object bean, String name)
PropertyUtils.getIndexedProperty(Object bean, String name, int index)
PropertyUtils.setIndexedProperty(Object bean, String name, Object value)
PropertyUtils.setIndexedProperty(Object bean, String name, int index, Object value)
实现代码:
Employee employee = ...;
int index = ...;
String name = "subordinate[" + index + "]";
Employee subordinate = (Employee)
PropertyUtils.getIndexedProperty(employee, name);//根据value取得属性
Employee employee = ...;
int index = ...;
Employee subordinate = (Employee)
PropertyUtils.getIndexedProperty(employee, "subordinate", index);//根据索引
值取的属性值
Mapped属性访问方法
PropertyUtils.getMappedProperty(Object bean, String name)
PropertyUtils.getMappedProperty(Object bean, String name, String key)
PropertyUtils.setMappedProperty(Object bean, String name, Object value)
PropertyUtils.setMappedProperty(Object bean, String name, String key, Object value)
实现代码:
Employee employee = ...;
Address address = ...;
PropertyUtils.setMappedProperty(employee, "address(home)", address);//根据数组
//内的值来去的相应的属性值
Employee employee = ...;
Address address = ...;
PropertyUtils.setMappedProperty(employee, "address", "home", address);
Nested属性访问方法//Nested的意思是参数中包含组件
PropertyUtils.getNestedProperty(Object bean, String name)
PropertyUtils.setNestedProperty(Object bean, String name, Object value)
实现代码:
String city = (String) PropertyUtils.getNestedProperty(employee,
"address(home).city");
2.BeanUtils.DynaBean and BeanUtils.DynaClass 接口介绍
DynaBean必须有一个bean来实现这个接口,DynaClass必有一个bean的属性集来实现
BasicDynaBean and BasicDynaClass - 基本的 Dynamic 类型
基本的API:
BasicDynaClass(java.lang.String name, java.lang.Class dynaBeanClass, DynaProperty[] properties)
BasicDynaBean(DynaClass dynaClass)
我们定义一下基本的代码:
//定义动态属性集
DynaProperty[] props = new DynaProperty[]{
new DynaProperty("address", java.util.Map.class),
new DynaProperty("subordinate", mypackage.Employee[].class),
new DynaProperty("firstName", String.class),
new DynaProperty("lastName", String.class)
};
//创建动态类来设定动态属性值
BasicDynaClass dynaClass = new BasicDynaClass("employee", null, props);
DynaBean employee = dynaClass.newInstance();
employee.set("address", new HashMap());
employee.set("subordinate", new mypackage.Employee[0]);
employee.set("firstName", "Fred");
employee.set("lastName", "Flintstone");
ResultSetDynaClass (Wraps ResultSet in DynaBeans) - 使用 ResultSet 的
Dynamic JavaBean
API:
ResultSetDynaClass(java.sql.ResultSet resultSet)
ResultSetDynaClass(java.sql.ResultSet resultSet, boolean lowerCase)
Connection conn = ...;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery
("select account_id, name from customers");
Iterator rows = (new ResultSetDynaClass(rs)).iterator();
while (rows.hasNext()) {
//利用动态bean进行输出
DynaBean row = (DynaBean) rows.next();
System.out.println("Account number is " +
row.get("account_id") +
" and name is " + row.get("name"));
}
rs.close();
stmt.close();
RowSetDynaClass (Disconnected ResultSet as DynaBeans) - 使用 RowSet 的 Dynamic
JavaBean
API:
RowSetDynaClass(java.sql.ResultSet resultSet)
RowSetDynaClass(java.sql.ResultSet resultSet, boolean lowerCase)
Connection conn = ...; // 从缓冲池取得连接
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ...");
RowSetDynaClass rsdc = new RowSetDynaClass(rs);
rs.close();
stmt.close();
...; //关闭连接返回缓冲池
List rows = rsdc.getRows();
...; // 处理得到的行
3.BeanUtils.ConvertUtils 介绍
这个包主要用来转换从request传递过来的函数
主要函数:
ConvertUtils().convert(java.lang.Object value)
ConvertUtils().convert(java.lang.String[] values, java.lang.Class clazz)
ConvertUtils().convert(java.lang.String value, java.lang.Class clazz)
实现例子:
HttpServletRequest request = ...;
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);//用ConvertUtils进行转换
目前支持的转换类型:
sjava.lang.BigDecimal
java.lang.BigInteger
boolean and java.lang.Boolean
byte and java.lang.Byte
char and java.lang.Character
java.lang.Class
double and java.lang.Double
float and java.lang.Float
int and java.lang.Integer
long and java.lang.Long
short and java.lang.Short
java.lang.String
java.sql.Date
java.sql.Time
java.sql.Timestamp
- test.rar (2.1 KB)
- 下载次数: 8
- commons-beanutils-1.8.0-bin.zip (3.1 MB)
- 下载次数: 18
发表评论
-
linux、win下用jmx监控tomcat运行情况
2012-03-14 15:52 1630for windows: 1、add below lin ... -
[转]Java缩略图类带水印(jpg,png)
2011-08-31 09:09 1561package com.example; import ... -
swing和awt的两个简单使用
2011-08-29 13:27 12321、swing: package frame; ... -
[转]笔记:Hibernate性能优化事项(持续更新)
2011-08-27 10:38 15981、针对Oracle数据库而言 ... -
自定义classloader实现
2011-08-09 14:19 1425package classloader; import ... -
[总结篇]Java中从键盘接收一个字符
2011-05-29 21:53 2175引言 从控制台中读 ... -
利用commons-net包实现ftp上传下载例子
2011-01-19 16:50 4028下载文件的时候注意一下,第一个参数要用iso-8859_ ... -
请使用Oracle新版本驱动
2010-11-09 11:08 2564今天使用apache dbutils连接oracle10G时, ... -
关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
2010-10-25 16:07 37823需求环境: 西安项目中,客户要求保护用户的密码信息,不 ... -
使用java.net.URL实现Post数据
2010-07-20 10:38 5980实现:利用URL访问URL并传递参数,然后获取返回结果。 可 ... -
java文件锁的实现
2010-07-02 16:37 7154项目使用到集群环境,流程发送时如果确保一个流程不会被两个流程同 ... -
如何导出大数据量的Excel文件
2010-05-25 09:07 2427一般导出Excel可以选择POI或者JXL,poi比较方便但是 ... -
Log4j使用总结
2010-01-09 09:50 956一、介绍 Log4j是Apa ... -
servlet下载文件不支持迅雷的解决方法
2009-11-18 13:42 3796servlet实现下载时,如果客户端安装了迅雷,发现不能正确下 ... -
JMS-ActiveMQ入门实例
2009-11-04 11:49 7217下载ActiveMQ http://activemq.a ... -
Lucene+HighLighter高亮显示实例
2009-11-03 18:37 5258今天搞了一个关于Lucene的例子,权当入门教程。网上有很多资 ... -
JAVA操作Excel参考
2009-11-03 10:33 1018Java Excel是一开放源码项目,通过它Java开发人 ... -
freemarker根据模板生成文件的编码问题
2009-10-20 15:46 2617用freemarker生成html静态文件时,涉及的编码主要有 ... -
RSS基本知识、开发相关
2009-09-27 11:43 1238RSSLibJ是一个专门读 ... -
Ant+xFire生成客户端代码实战
2009-09-12 16:41 2729生成xfire客户端有多种方式,直接调用xFire暴露的接口、 ...
相关推荐
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
这个库的核心是`org.apache.commons.beanutils`包,其中包含了大量的辅助方法,使得开发者可以更加便捷地处理JavaBean属性,避免了直接调用getter和setter方法的繁琐过程。 Apache Commons BeanUtils库的核心功能:...
`commons-beanutils-1.9.3-sources.jar`则是源代码包,它包含了BeanUtils库的完整源代码,这对于开发者进行调试、学习和自定义扩展非常有用。通过查看源代码,可以深入理解内部的工作机制,以及如何有效地利用这些...
commons-beanutils-1.8.0 jar包: 1.commons-beanutils-1.8.0.jar 2.commons-beanutils-1.8.0-javadoc.jar 3.commons-beanutils-1.8.0-sources.jar 4.commons-beanutils-bean-collections-1.8.0.jar 5.commons-...
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
Apache Commons BeanUtils是Java开发中一个非常重要的工具库,它为开发者提供了大量便捷的JavaBean操作功能。在本文中,我们将深入探讨`commons-beanutils-1.9.4`这个版本,了解其核心功能、使用场景以及如何在项目...
Commons-beanutils jar包,比较新希望对大家能有帮助
Apache Commons BeanUtils是Java开发中的一个实用工具库,主要用于处理JavaBeans对象,简化对JavaBean属性的操作。这个库提供了一套方便的API,使得开发者可以通过简单的API调用来获取、设置JavaBean的属性,甚至...
Apache Commons BeanUtils是Java开发中的一个实用工具库,它提供了对JavaBeans进行操作的便捷方法。这个库的主要目的是简化对对象属性的访问,使得开发者能够更高效地处理对象的属性设置和获取,而无需手动编写大量...
Commons BeanUtils Most Java developers are used to creating Java classes that conform to the JavaBeans naming patterns for property getters and setters. It is natural to then access these methods ...
commons-beanutils, Apache Commons Beanutils的镜像 Apache Commons BeanUtils Apache Commons BeanUtils提供了一个 easy-to-use,但它围绕反射。文档更多信息可以在公共BeanUtils主页上找到。 可以浏览 JavaDoc插
Apache Commons BeanUtils Apache Commons BeanUtils为反射和自省提供了一个易于使用但灵活的包装器。文献资料可以在上找到更多信息。 可以浏览 。 与Apache Commons BeanUtils的用法有关的问题应张贴到。在哪里可以...
《深入解析Apache Commons BeanUtils库》 Apache Commons BeanUtils库是Java开发中广泛使用的工具集,主要用于处理JavaBean对象的属性操作。这个库提供了一系列简便的方法,使得开发者能够轻松地进行对象属性的读取...
Apache Commons BeanUtils是Java开发中的一个实用工具库,主要用于简化对JavaBean的操作。这个`commons-beanutils-1.9.3.jar`文件是该库的一个版本,它提供了丰富的API来帮助开发者更方便地处理JavaBean对象。在这个...
Apache Commons BeanUtils是Java开发中的一个实用库,它提供了对JavaBeans属性的简便操作。这个库简化了在对象之间复制属性、处理集合以及调用JavaBean方法的过程。在这个"commons-beanutils-1.9.4.jar.zip"压缩包中...
在这个特定的压缩包“commons-beanutils-1.8.3”中,包含了一个核心的jar包,用于支持对JavaBean对象的操作。下面我们将深入探讨Apache Commons BeanUtils 1.8.3的核心功能、使用场景及其在实际开发中的重要性。 1....
Commons beanutils API.chm apache Commons beanutils API
1. **Apache Commons BeanUtils** - `commons-beanutils-1.9.3.jar` Apache Commons BeanUtils库是用于处理JavaBeans的工具类库。它提供了一种简单的方式来操纵JavaBean属性,无需直接调用getter和setter方法。这个...
解决办法是把commons-beanutils中的org/apache/commons/collections删除,这里上传一个改好可以直接使用的。