Apache Commons 工具类介绍及简单使用_第1页
Apache Commons 工具类介绍及简单使用_第2页
Apache Commons 工具类介绍及简单使用_第3页
Apache Commons 工具类介绍及简单使用_第4页
Apache Commons 工具类介绍及简单使用_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

组件功能介绍BeanUtils提供了对于JavaBean进行各种操作,克隆对象,属性等等.BetwixtXML与Java对象之间相互转换.Codec处理常用的编码方法的工具类包例如DES、SHA1、MD5、Base64等.Collectionsjava集合框架操作.Compressjava提供文件打包 压缩类库.Configuration一个java应用程序的配置管理类库.DBCP提供数据库连接池服务.DbUtils提供对jdbc的操作封装来简化数据查询和记录读取操作.Emailjava发送邮件 对javamail的封装.FileUpload提供文件上传功能.HttpClien提供HTTP客户端与服务器的各种通讯操作. 现在已改成HttpComponentsIOio工具的封装.LangJava基本对象方法的工具类包 如:StringUtils,ArrayUtils等等.Logging提供的是一个Java 的日志接口.Validator提供了客户端和服务器端的数据验证框架.1、BeanUtils提供了对于JavaBean进行各种操作, 比如对象,属性复制等等。javaview plaincopy1. /1、克隆对象2. /新创建一个普通JavaBean,用来作为被克隆的对象3. 4. publicclassPerson5. privateStringname=;6. privateStringemail=;7. 8. privateintage;9. /省略set,get方法10. 11. 12. /再创建一个Test类,其中在main方法中代码如下:13. importjava.lang.reflect.InvocationTargetException;14. importjava.util.HashMap;15. importjava.util.Map;16. mons.beanutils.BeanUtils;17. mons.beanutils.ConvertUtils;18. publicclassTest19. 20. /*21. 22. *paramargs23. 24. */25. publicstaticvoidmain(Stringargs)26. Personperson=newPerson();27. person.setName(tom);28. person.setAge(21);29. try30. /克隆31. Personperson2=(Person)BeanUtils.cloneBean(person);32. System.out.println(person2.getName()+person2.getAge();33. catch(IllegalAccessExceptione)34. e.printStackTrace();35. catch(InstantiationExceptione)36. e.printStackTrace();37. catch(InvocationTargetExceptione)38. e.printStackTrace();39. catch(NoSuchMethodExceptione)40. e.printStackTrace();41. 42. 43. 44. 45. 46. 47. 48. /原理也是通过Java的反射机制来做的。49. /2、将一个Map对象转化为一个Bean50. /这个Map对象的key必须与Bean的属性相对应。51. Mapmap=newHashMap();52. map.put(name,tom);53. map.put(email,tom);54. map.put(age,21);55. /将map转化为一个Person对象56. Personperson=newPerson();57. BeanUtils.populate(person,map);58. /通过上面的一行代码,此时person的属性就已经具有了上面所赋的值了。59. /将一个Bean转化为一个Map对象了,如下:60. Mapmap=BeanUtils.describe(person)2、BetwixtXML与Java对象之间相互转换。javaview plaincopy1. /1、将JavaBean转为XML内容2. /新创建一个Person类3. publicclassPerson4. privateStringname;5. privateintage;6. /*Needtoallowbeantobecreatedviareflection*/7. publicPersonBean()8. 9. publicPersonBean(Stringname,intage)10. =name;11. this.age=age;12. 13. /省略set,get方法14. publicStringtoString()15. returnPersonBeanname=+name+,age=+age+;16. 17. 18. 19. /再创建一个WriteApp类:20. importjava.io.StringWriter;21. mons.betwixt.io.BeanWriter;22. publicclassWriteApp23. /*24. *创建一个例子Bean,并将它转化为XML.25. */26. publicstaticfinalvoidmain(Stringargs)throwsException27. /先创建一个StringWriter,我们将把它写入为一个字符串28. StringWriteroutputWriter=newStringWriter();29. /Betwixt在这里仅仅是将Bean写入为一个片断30. /所以如果要想完整的XML内容,我们应该写入头格式31. outputWriter.write(“n”);32. /创建一个BeanWriter,其将写入到我们预备的stream中33. BeanWriterbeanWriter=newBeanWriter(outputWriter);34. /配置betwixt35. /更多详情请参考javadocs或最新的文档36. beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);37. beanWriter.getBindingConfiguration().setMapIDs(false);38. beanWriter.enablePrettyPrint();39. /如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么40. /但是让我们将例子Bean名作为根节点吧41. beanWriter.write(“person”,newPersonBean(“JohnSmith”,21);42. /输出结果43. System.out.println(outputWriter.toString();44. /Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams,45. /但这里仅仅是一个例子,不会做更多事情,所以可以关掉46. outputWriter.close();47. 48. 49. /2、将XML转化为JavaBean50. importjava.io.StringReader;51. mons.betwixt.io.BeanReader;52. publicclassReadApp53. publicstaticfinalvoidmain(Stringargs)throwsException54. /先创建一个XML,由于这里仅是作为例子,所以我们硬编码了一段XML内容55. StringReaderxmlReader=newStringReader(56. 25JamesSmith);57. /创建BeanReader58. BeanReaderbeanReader=newBeanReader();59. /配置reader60. beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);61. beanReader.getBindingConfiguration().setMapIDs(false);62. /注册beans,以便betwixt知道XML将要被转化为一个什么Bean63. beanReader.registerBeanClass(person,PersonBean.class);64. /现在我们对XML进行解析65. PersonBeanperson=(PersonBean)beanReader.parse(xmlReader);66. /输出结果67. System.out.println(person);68. 69. 3、Codec提供了一些公共的编解码实现,比如Base64, Hex, MD5,Phonetic and URLs等等。javaview plaincopy1. /Base64编解码2. privatestaticStringencodeTest(Stringstr)3. Base64base64=newBase64();4. try5. str=base64.encodeToString(str.getBytes(UTF-8);6. catch(UnsupportedEncodingExceptione)7. e.printStackTrace();8. 9. System.out.println(Base64编码后:+str);10. returnstr;11. 12. 13. privatestaticvoiddecodeTest(Stringstr)14. Base64base64=newBase64();15. /str=Arrays.toString(Base64.decodeBase64(str);16. str=newString(Base64.decodeBase64(str);17. System.out.println(Base64解码后:+str);18. 4、Collections对java.util的扩展封装,处理数据还是挺灵活的。mons.collections Commons Collections自定义的一组公用的接口和工具类mons.collections.bag 实现Bag接口的一组类mons.collections.bidimap 实现BidiMap系列接口的一组类mons.collections.buffer 实现Buffer接口的一组类mons.collections.collection 实现java.util.Collection接口的一组类parators 实现java.util.Comparator接口的一组类mons.collections.functors Commons Collections自定义的一组功能类mons.collections.iterators 实现java.util.Iterator接口的一组类mons.collections.keyvalue 实现集合和键/值映射相关的一组类mons.collections.list 实现java.util.List接口的一组类mons.collections.map 实现Map系列接口的一组类mons.collections.set 实现Set系列接口的一组类javaview plaincopy1. /*2. *得到集合里按顺序存放的key之后的某一Key3. */4. OrderedMapmap=newLinkedMap();5. map.put(FIVE,5);6. map.put(SIX,6);7. map.put(SEVEN,7);8. map.firstKey();/returnsFIVE9. map.nextKey(FIVE);/returnsSIX10. map.nextKey(SIX);/returnsSEVEN11. 12. /*13. *通过key得到value14. *通过value得到key15. *将map里的key和value对调16. */17. 18. BidiMapbidi=newTreeBidiMap();19. bidi.put(SIX,6);20. bidi.get(SIX);/returns621. bidi.getKey(6);/returnsSIX22. /bidi.removeValue(6);/removesthemapping23. BidiMapinverse=bidi.inverseBidiMap();/returnsamapwithkeysandvaluesswapped24. System.out.println(inverse);25. 26. /*27. *得到两个集合中相同的元素28. */29. Listlist1=newArrayList();30. list1.add(1);31. list1.add(2);32. list1.add(3);33. Listlist2=newArrayList();34. list2.add(2);35. list2.add(3);36. list2.add(5);37. Collectionc=CollectionUtils.retainAll(list1,list2);38. System.out.println(c);5、Compresscommons compress中的打包、压缩类库。javaview plaincopy1. /创建压缩对象2. ZipArchiveEntryentry=newZipArchiveEntry(CompressTest);3. /要压缩的文件4. Filef=newFile(e:test.pdf);5. FileInputStreamfis=newFileInputStream(f);6. /输出的对象压缩的文件7. ZipArchiveOutputStreamzipOutput=newZipArchiveOutputStream(newFile(e:test.zip);8. zipOutput.putArchiveEntry(entry);9. inti=0,j;10. while(j=fis.read()!=-1)11. 12. zipOutput.write(j);13. i+;14. System.out.println(i);15. 16. zipOutput.closeArchiveEntry();17. zipOutput.close();18. fis.close();6、Configuration用来帮助处理配置文件的,支持很多种存储方式。1. Properties files2. XML documents3. Property list files (.plist)4. JNDI5. JDBC Datasource6. System properties7. Applet parameters8. Servlet parametersjavaview plaincopy1. /举一个Properties的简单例子2. #perties3. colors.background=#FFFFFF4. colors.foreground=#0000805. window.width=5006. window.height=3007. 8. PropertiesConfigurationconfig=newPropertiesConfiguration(perties);9. config.setProperty(colors.background,#000000);10. config.save();11. 12. config.save(perties);/saveacopy13. Integerinteger=config.getInteger(window.width);7、DBCP(Database Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。javaview plaincopy1. importjavax.sql.DataSource;2. importjava.sql.Connection;3. importjava.sql.Statement;4. importjava.sql.ResultSet;5. importjava.sql.SQLException;6. 7. mons.pool.ObjectPool;8. mons.pool.impl.GenericObjectPool;9. mons.dbcp.ConnectionFactory;10. mons.dbcp.PoolingDataSource;11. mons.dbcp.PoolableConnectionFactory;12. mons.dbcp.DriverManagerConnectionFactory;13. /官方示例14. publicclassPoolingDataSources15. 16. publicstaticvoidmain(Stringargs)17. System.out.println(加载jdbc驱动);18. try19. Class.forName(oracle.jdbc.driver.OracleDriver);20. catch(ClassNotFoundExceptione)21. e.printStackTrace();22. 23. System.out.println(Done.);24. /25. System.out.println(设置数据源);26. DataSourcedataSource=setupDataSource(jdbc:oracle:thin:localhost:1521:test);27. System.out.println(Done.);28. 29. /30. Connectionconn=null;31. Statementstmt=null;32. ResultSetrset=null;33. 34. try35. System.out.println(Creatingconnection.);36. conn=dataSource.getConnection();37. System.out.println(Creatingstatement.);38. stmt=conn.createStatement();39. System.out.println(Executingstatement.);40. rset=stmt.executeQuery(select*fromperson);41. System.out.println(Results:);42. intnumcols=rset.getMetaData().getColumnCount();43. while(rset.next()44. for(inti=0;i=numcols;i+)45. System.out.print(t+rset.getString(i);46. 47. System.out.println();48. 49. catch(SQLExceptione)50. e.printStackTrace();51. finally52. tryif(rset!=null)rset.close();catch(Exceptione)53. tryif(stmt!=null)stmt.close();catch(Exceptione)54. tryif(conn!=null)conn.close();catch(Exceptione)55. 56. 57. 58. publicstaticDataSourcesetupDataSource(StringconnectURI)59. /设置连接地址60. ConnectionFactoryconnectionFactory=newDriverManagerConnectionFactory(61. connectURI,null);62. 63. /创建连接工厂64. PoolableConnectionFactorypoolableConnectionFactory=newPoolableConnectionFactory(65. connectionFactory);66. 67. /获取GenericObjectPool连接的实例68. ObjectPoolconnectionPool=newGenericObjectPool(69. poolableConnectionFactory);70. 71. /创建PoolingDriver72. PoolingDataSourcedataSource=newPoolingDataSource(connectionPool);73. 74. returndataSource;75. 76. 8、DbUtilsApache组织提供的一个资源JDBC工具类库,它是对JDBC的简单封装,对传统操作数据库的类进行二次封装,可以把结果集转化成List。,同时也不影响程序的性能。DbUtils类:启动类ResultSetHandler接口:转换类型接口MapListHandler类:实现类,把记录转化成ListBeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象Qrery Runner类:执行SQL语句的类javaview plaincopy1. mons.dbutils.DbUtils;2. mons.dbutils.QueryRunner;3. mons.dbutils.handlers.BeanListHandler;4. importjava.sql.Connection;5. importjava.sql.DriverManager;6. importjava.sql.SQLException;7. importjava.util.List;8. /转换成list9. publicclassBeanLists10. publicstaticvoidmain(Stringargs)11. Connectionconn=null;12. Stringurl=jdbc:mysql:/localhost:3306/ptest;13. StringjdbcDriver=com.mysql.jdbc.Driver;14. Stringuser=root;15. Stringpassword=ptest;16. 17. DbUtils.loadDriver(jdbcDriver);18. try19. conn=DriverManager.getConnection(url,user,password);20. QueryRunnerqr=newQueryRunner();21. Listresults=(List)qr.query(conn,selectid,namefromperson,newBeanListHandler(Person.class);22. for(inti=0;iresults.size();i+)23. Personp=(Person)results.get(i);24. System.out.println(id:+p.getId()+,name:+p.getName();25. 26. catch(SQLExceptione)27. e.printStackTrace();28. finally29. DbUtils.closeQuietly(conn);30. 31. 32. 33. 34. publicclassPerson35. privateIntegerid;36. privateStringname;37. 38. /省略set,get方法39. 40. 41. mons.dbutils.DbUtils;42. mons.dbutils.QueryRunner;43. mons.dbutils.handlers.MapListHandler;44. 45. importjava.sql.Connection;46. importjava.sql.DriverManager;47. importjava.sql.SQLException;48. 49. importjava.util.List;50. importjava.util.Map;51. /转换成map52. publicclassMapLists53. publicstaticvoidmain(Stringargs)54. Connectionconn=null;55. Stringurl=jdbc:mysql:/localhost:3306/ptest;56. StringjdbcDriver=com.mysql.jdbc.Driver;57. Stringuser=root;58. Stringpassword=ptest;59. 60. DbUtils.loadDriver(jdbcDriver);61. try62. conn=DriverManager.getConnection(url,user,password);63. QueryRunnerqr=newQueryRunner();64. Listresults=(List)qr.query(conn,selectid,namefromperson,newMapListHandler();65. for(inti=0;iresults.size();i+)66. Mapmap=(Map)results.get(i);67. System.out.println(id:+map.get(id)+,name:+map.get(name);68. 69. catch(SQLExceptione)70. e.printStackTrace();71. finally72. DbUtils.closeQuietly(conn);73. 74. 75. 9、Email提供的一个开源的API,是对javamail的封装。javaview plaincopy1. /用commonsemail发送邮件2. publicstaticvoidmain(Stringargs)3. Emailemail=newSimpleEmail();4. email.setHostName();5. email.setSmtpPort(465);6. email.setAuthenticator(newDefaultAuthenticator(username,password);7. email.setSSLOnConnect(true);8. email.setFrom();9. email.setSubject(TestMail);10. email.setMsg(Thisisatestmail.:-);11. email

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论