当前位置: 首页 > 科技观察

Java开源ApacheCommons工具全面介绍

时间:2023-03-12 16:58:01 科技观察

前言ApacheCommons工具大家都用过,但可能缺乏系统的学习,只使用了一小部分功能,发挥不出极限价值。说白了就是好白菜让猪给拱门!代码太多,手机端观看效果不好。建议保存后在电脑上静静观看。因为内容健康,大家可以大胆转发。即使未满18岁,也可以在没有父母陪同的情况下观看!1、BeanUtils提供了对JavaBean的各种操作,如对象、属性拷贝等。//1。克隆对象//新建一个普通JavaBean作为克隆对象publicclassPerson{privateStringname="";privateStringemail="";privateintage;//省略set和get方法}//再创建一个Test类,其中代码在主要方法如下:**@paramargs*/publicstaticvoidmain(String[]args){Personperson=newPerson();person.setName("tom");person.setAge(21);try{//ClonePersonperson2=(Person)BeanUtils.cloneBean(person);System.out.println(person2.getName()+">>"+person2.getAge());}catch(IllegalAccessExceptione){e.printStackTrace();}catch(InstantiationExceptione){e.printStackTrace();}catch(InvocationTargetExceptione){e.printStackTrace();}catch(NoSuchMethodExceptione){e.printStackTrace();}}}//原理也是通过Java的反射机制完成的。//2。将Map对象转换成Bean//这个Map对象的key必须对应Bean的属性。mapmap=newHashMap();map.put("name","tom");map.put("email","tom@");map.put("age","21");//Map转换Person对象Personperson=newPerson();BeanUtils.populate(person,map);//通过上面这行代码,person的属性已经有了上面赋值。//将Bean转换为Map对象,如下:Mapmap=BeanUtils.describe(person)2.BetwixtXML和Java对象之间的转换。//1。将JavaBean转换成XML内容//创建一个新的Person类publicclassPerson{privateStringname;privateintage;/**需要允许beantobecreatedviareflection*/publicPersonBean(){}publicPersonBean(Stringname,intage){this.name=name;this.age=age;}//Omitset,getmethodpublicStringtoString(){return"PersonBean[name='"+name+"',age='"+age+"']";}}//创建另一个WriteApp类:importjava.io.StringWriter;importorg...astringStringWriteroutputWriter=newStringWriter();//Betwixt这里只是把Bean写成片段//所以如果我们想要完整的XML内容,应该写header格式outputWriter.write("");//创建一个BeanWriter,它将写入到我们准备好的流中BeanWriterbeanWriter=newBeanWriter(outputWriter);//配置betwixt//更多细节请参考javadocs或文档beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);beanWriterter.getBindingConfiguration().setMapIDs(false);beanWriter.enablePrettyPrint();//这个地方如果不传入XML根节点名,Betwixt会猜是什么//但是我们还是用示例Bean名作为根节点beanWriter.write("person",newPersonBean("JohnSmith",21));//输出结果System.out.println(outputWriter.toString());//Betwixt写的是片段而不是文档,所以不会自动关闭writers或streams,//但是这只是一个例子,不会做更多,所以你可以关闭outputWriter.close();}}//2,将XML转换为JavaBeanimportjava.io.StringReader;importorg.apache.commons.betwixt.io.BeanReader;publicclassReadApp{publicstaticfinalvoidmain(Stringargs[])throwsException{//先创建一个XML,因为这只是一个例子,所以我们硬编码一段XML内容StringReaderxmlReader=newStringReader("25JamesSmith");//创建BeanReaderBeanReaderbeanReader=newBeanReader();//configreaderbeanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);beanReader.getBindingConfiguration().setMapIDs(false);//注册bean,这样betwixt就知道什么XML会被转换成BeanbeanReader.registerBeanClass("person",PersonBean.class);//现在我们解析XMLPersonBeanperson=(PersonBean)beanReader.parse(xmlReader);//输出结果System.out.println(person);}}为什么有些人总是比你优秀,是因为他自己很好,一直在努力变得更好,而你还在我的时候偷偷开心满足于现状!关注我,私信回复我的“信息”获取免费Java架构学习资料(含高可用、高并发、高性能与分布式、Jvm性能调优、Spring源码、MyBatis、Netty、Redis、Kafka、Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等知识点架构视频学习资料和电子书资料)合理利用每一分每一秒的时间来学习和提升自己,不要停止利用“没时间”来掩盖你思想上的懒惰!趁着年轻,好好努力,给未来的自己一个交代!3.Codec提供了一些常用的codec实现,如Base64,Hex,MD5,PhoneticandURLs等。4.Collections是java.util的扩展包,处理数据比较灵活org.apache.commons.collections——CommonsCollections定制的一组通用接口和工具类org.apache.commons.collections.bag——一组实现Bag接口的类org.apache.commons.collections.bidimap——实现BidiMap类org.apache.commons.collections.buffer的集合-一组实现Buffer接口的类org.apache.commons.collections.collection-一组org.apache.commons实现java.util.Collection接口的类。collections.comparators–一组实现java.util.Comparator接口的类org.apache.commons.collections.functors–一组由CommonsCollections定制的功能类org.apache.commons.collections.iterators–实现java.util。Iterator一组实现接口的类org.apache.commons.collections.keyvalue-一组实现集合和键/值映射相关的类org.apache.commons.collections.list-一组实现java.util.List接口组织。apache.commons.collections.map–一组实现Map系列接口的类org.apache.commons.collections5.Compress.set–一组实现Set系列接口的类5.Compresscommonscompress打包压缩类库.6.Configuration用于帮助处理配置文件,支持多种存储方式。属性文件XML文件属性列表文件(.plist)JNDIJDBC数据源系统属性Applet参数Servlet参数7.DBCP(DatabaseConnectionPool)是一种依赖于Jakartacommons-pool对象池机制的数据库连接池。Tomcat的数据源使用DBCP。8、DbUtils是Apache组织提供的资源JDBC工具类库。是对JDBC的简单封装。它将传统的数据库操作重新封装,将结果集转换为List,而不影响程序的性能。文章转自飞巢大神DbUtils类:启动类ResultSetHandler接口:转换类型接口MapListHandler类:实现类,将记录转换成ListBeanListHandler类:实现类,将记录转换成List,将记录做成JavaBean类型对象QreryRunner类:An9.Email提供的开源API,执行SQL语句,是对javamail的封装。10.FileUploadjavaweb文件上传功能。11、HttpClient是一个基于HttpCore的HTTP/1.1兼容的HTTP客户端,它提供了一系列可重用的客户端认证、HTTP状态维护、HTTP连接管理模块。12、把http://IO扩展为http://java.io,操作文件很方便。13、Lang主要是对字符、数组的操作等公共工具的集合。14、Logging提供Java日志接口,轻量级,不依赖于具体的日志实现工具。importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;publicclassCommonLogTest{privatestaticLoglog=LogFactory.getLog(CommonLogTest.class);//打印日志publicstaticvoidmain(String[]args){log.error("ERROR");log.debug("DEBUG");log.warn("WARN");log.info("INFO");log.trace("TRACE");System.out.println(log.getClass());}}15.Validator通用验证系统,该组件为客户端和服务端提供数据验证框架。1.Validatedate//获取日期验证DateValidatorvalidator=DateValidator.getInstance();//验证/转换日期DatefooDate=validator.validate(fooString,"dd/MM/yyyy");if(fooDate==null){//错误不是日期返回;}2.表达式验证//设置参数booleancaseSensitive=false;Stringregex1="^([A-Z]*)(?:\-)([A-Z]*)*$"Stringregex2="^([A-Z]*)$";String[]regexs=newString[]{regex1,regex1};//创建验证RegexValidatorvalidator=newRegexValidator(regexs,caseSensitive);//验证返回booleanbooleanvalid=validator.isValid("abc-def");//验证返回字符串Stringresult=validator.validate("abc-def");//验证返回数组String[]groups=validator.match("abc-def");3.在配置文件中使用验证.apache.commons.validator.Field"/>添加名称验证。4.验证类Excerptsfromorg.apache.commons.validator.RequiredNameTest//加载验证配置文件InputStreamin=this.getClass().getResourceAsStream("validator-name-required.xml");ValidatorResourcesresources=newValidatorResources(in);//这是一个自己创建的bean,我省略了Namename=newName();Validatorvalidator=newValidator(resources,"nameForm");//设置参数validator.setParameter(Validator.BEAN_PARAM,name);Mapresults=null;//验证results=validator.validate();if(results.get("firstName")==null){//验证success}else{//errorsintererrors=((Integer)results.get("firstName")).intValue();}