常用工具jar包详解(很详细,文档中有源码实例)

上传人:小** 文档编号:199033901 上传时间:2023-04-10 格式:DOC 页数:30 大小:160.50KB
收藏 版权申诉 举报 下载
常用工具jar包详解(很详细,文档中有源码实例)_第1页
第1页 / 共30页
常用工具jar包详解(很详细,文档中有源码实例)_第2页
第2页 / 共30页
常用工具jar包详解(很详细,文档中有源码实例)_第3页
第3页 / 共30页
资源描述:

《常用工具jar包详解(很详细,文档中有源码实例)》由会员分享,可在线阅读,更多相关《常用工具jar包详解(很详细,文档中有源码实例)(30页珍藏版)》请在装配图网上搜索。

1、commons-io.jar:可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的Stream,reader与writer实现.commons-beanutils.jar:提供对Java反射和自省API的包装,主要提供了对于JavaBean进行各种操作。commons-digester.jar:它能方便地将XML文档所定义的元素转化为JAVA对象,其实它的用法有点象栈(当然内在的原理就是那个古老的东西,只是提供了更高一层的封装)。comm

2、ons-lang.jsr:它扩展了标准java.langAPI,增加了字符串操作方法、基本数值方法、对象反射、创建和串行化以及System属性。它还包含一个可继承的enum类型、对多种嵌套的Exception类型的支持、对java.util.Date的增强以及用于构建方法的实用程序,例如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。ArrayUtils-用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等;BitField-用于操作位元,提供了一些方便而安全的方法; BooleanUtils-用于操作

3、和转换boolean或者Boolean及相应的数组;CharEncoding-包含了Java环境支持的字符编码,提供是否支持某种编码的判断;CharRange-用于设定字符范围并做相应检查; CharSet-用于设定一组字符作为范围并做相应检查;CharSetUtils-用于操作CharSet;CharUtils-用于操作char值和Character对象;ClassUtils-用于对Java类的操作,不使用反射;ObjectUtils-用于操作Java对象,提供null安全的访问和其他一些功能;RandomStringUtils-用于生成随机的字符串;SerializationUtils-用

4、于处理对象序列化,提供比一般Java序列化更高级的处理能力;StringEscapeUtils-用于正确处理转义字符,产生正确的Java、JavaScript、HTML、XML和SQL代码;StringUtils-处理String的核心类,提供了相当多的功能;SystemUtils-在java.lang.System基础上提供更方便的访问,如用户路径、Java版本、时区、操作系统等判断;Validate-提供验证的操作,有点类似assert断言;WordUtils-用于处理单词大小写、换行等。commons-codec.jar:包含一些通用的编码解码算法。包括一些语音编码器,Hex,Base6

5、4,以及URLencoder。代码耳茜1,3678为要加密的字符串为要解密的字符串9 加密10111,13解密11516commons-collections.jar:提供一个类包来扩展和增加标准的JavaCollection框架。Bag接口:适用于包含一个对象的多个拷贝的集合Buffer接口:适用于具有顺序的集合类,例如FIFOs(先进先出)BidiMap(双向映射):可以通过值查找键,也可以通过键查找值Map迭代器:提供了对映射的快速迭代对类型检查进行了封装,确保特定类的实例可以被添加到集合中对转换进行了封装,将集合中的对象转换成被加入时的类型对集合进行组合,使多个集合看起来就像一个集合一

6、样 有序映射和set,保持元素添加时的顺序,包括一个基于LRU的map标识映射可以给予对象的=来比较对象,而不是基于equals方法引用映射可以允许键and/or值可以有控制的进行回收 很多比较器的实现 很多迭代器的实现 从数组或者枚举到集合的适配器 用来测试或者创建典型set理论的集合属性,例如与、或、闭包commons-dbutil.jar:对传统操作数据库的类进行二次封装,可以把结果集转化成List(1)mons.dbutilsDbUtils:提供如关闭连接、装载JDBC驱动程序等常规工作的工具类QueryRunner:该类简单化了SQL查询,它与ResultSetHandler组合在起

7、使用可以完成大部分的数据库操作,能够大大减少编码量。QueryLoader:属性文件加载器,主要用于加载属性文件中的SQL到内存中。(2) mons.dbutils.handlersArrayHandler:将ResultSet中第一行的数据转化成对象数组ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是ObjectBeanHandler:将ResultSet中第一行的数据转化成类对象BeanListHandler:将ResultSet中所有的数据转化成List,List中存放的是类对象ColumnListHandler:将ResultSet中某

8、一列的数据存成List,List中存放的是Object对象KeyedHandler:将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据MapHandler:将ResultSet中第一行的数据存成Map映射MapListHandler:将ResultSet中所有的数据存成List丄ist中存放的是MapScalarHandler:将ResultSet中一条记录的其中某一列的数据存成Object(3) mons.dbutils.wrappersSqlNullCheckedResultSet:该类是用来对sql语句执行完成之后的的数值进行null的替换。StringTr

9、immedResultSet:去除ResultSet中中字段的左右空格。Trim()代码耳im2,4imim78910121,1411617181920理21222324226272829,0,132以下部分代码采用存储方式,可以采用的方式代替进行处以下是处理代/码/,可以抽取出来435363上例在处理结果集时,它把数据库中的每一行映射成一个,其中列名作为,该列对应的值作为存放,38查询的所有的数据一起放在一个里,然后进行处理,当然,一个更明智的处理是直接返回然后再单独进行处理。39事实上上例返回的结果集中的每一行不必放在一个里,你可以放在一个里,4041如果使用而不是用,那么,你也许需要建立

10、一个,如下:4243444,4644849,0publiS,cringg,Au,hors(),1r,u,run,hors;,2,3publviocisd,Au,hors(S,ring,u,hors)54,6publiinc,g,Id(),r,uirdn;,8,9publviocisd,iInd,i(d)60,hi.sid=id;6162publiS,cringg,Ti,l,()63 r,u,rin,l,;646,publviocisd,Ti,l,(S,ring,i,l,)66,hi.s,i,l,=,i,l,;66869/*0然后简单修改一下中的部分代码即可,代替之后的源代码如下:1*/2374

11、7576im7im7980818283848,8687888990919293理949,96Sy97989910010110210310410,106107108/*109采用以下部分代码采用存储方式,可以采用的方式代替进行处以下/是/处理代码,可以抽取出来的方式即第一种方式性能要好的多,采用性能比较低可能是因为采用反射的缘故,110采用反射的东东性能和不采用反射的还是有点差距111*/commons-mail.jar:是对JavaMail进行封装从而简化其操作,功能:简单文本邮件、带附件的邮件、HTML格式的邮件代码说明:/简单文本邮件2,4邮件服务器验证:用户名必须放在前面,否则乱码789

12、101112带附件的邮件1,1411617181920212223242262728293031中文中文中文中文本地文件远程文件密码32格式邮件435638中文中文3940414243一些问题:首先是包的问题,因为不是只下载的包,44如果是或者以下的版本,还需要下载的和的包,4,如果是的话只需要就可以了。具体下载地址去网站自己找找就行了,46然后就是要开启邮箱的服务,具体的进入邮箱进行设置就可以了。一般都很简单。4最后就是,跟其他的邮箱的不同之处在于它的默认端口不是普通的,48而是,所以需要在程序中动态设置一下,设置的具体方法就是:49 设定是否使用50 设定端口,1Commons-Chain

13、.jar:(参考)Chain提供实现组织复杂的处理流程的“责任链模式”。(l).Command接口。它是CommonsChain中最重要的接口,表示在Chain中的具体某一步要执行的命令。它只有一个方法:booleanexecute(Contextcontext)。如果返回true,那么表示Chain的处理结束,Chain中的其他命令不会被调用;返回false,则Chain会继续调用下一个Command,直到:-Command返回true;-Command抛出异常;-Chain的末尾;(2).Context接口。它表示命令执行的上下文,在命令间实现共享信息的传递。Context接口的父接口是M

14、ap,ContextBase实现了Context。对于web环境,可以使用WebContext类及其子类(FacesWebContext、PortletWebContext和ServletWebContext)。(3).Chain接口。它表示“命令链”,要在其中执行的命令,需要先添加到Chain中。Chain的父接口是Command,ChainBase实现了它。.Filter接口。它的父接口是Command,它是一种特殊的Command。除了Command的execute,它还包括一个方法:booleanpostprocess(Contextcontext,Exceptionexception

15、)。CommonsChain会在执行了Filter的execute方法之后,执行postprocess(不论Chain以何种方式结束)。Filter的执行execute的顺序与Filter出现在Chain中出现的位置一致,但是执行postprocess顺序与之相反。如:如果连续定义了filter1和filter2,那么execute的执行顺序是:filterl-filter2;而postprocess的执行顺序是:filter2-filterl。(5).Catalog接口。它是逻辑命名的Chain和Command集合。通过使用它,Command的调用者不需要了解具体实现Command的类名,只

16、需要通过名字就可以获取所需要的Command实例。基本使用1.执行由顺序的命令组成的流程,假设这条流程包含1、2和3步。实现要执行的命令步骤:代码耳茜25,710111213publcilcasCs1publbioco151,171注册命令,创建执行的Chain:代码耳茜19202122232252,272293031322.增加/命/令的顺序也决定了执行命令的顺序使用配置文件加载Command。除了在程序中注册命令之外,还可以使用配置文件来完成。对于例1,配置文件可以写成:代码茜1235定义的!顺-序-决定执行的顺序1011装入配置文件的代码如下:代码耳茜:12131415161181,20

17、加载C/h/ain212223 cmd.execute(ctx);24 加载25 cmd=catalog.getCommand(command426 cmd.execute(ctx);22829注意:使用配置文件的话,需要使用CommonsDigester。而Digester则依赖:CommonsCollections、CommonsLogging和CommonsBeanUtils。3.加载Catalog到web应用。为了在web应用中加载Catalog,需要在对应的web.xml中添加:代码茜134568,102缺省情况下,Catalog会被加载到ServletContext中,对应的属性名

18、字是“catalog”。因此获取Catalog:Catalogcatalog=(Catalog)request.getSession().getServletContext().getAttribute(catalog);4.Filter的使用。Filter是一种特殊的Command,它除了execute方法会被执行之外,同时还会在Chain执行完毕之后(不论是正常结束还是异常结束)执行postprocess。因此,可以将它和Servlet中的Filter做类比:execute相当于处理前操作(相对下一个Command来说),postprocess相当于处理后操作。Filter的使用以及配置和

19、Command完全一样,为了在Command1之前添加一个Filter:定义Filter代码总茜心134System.out.println(Filter1isaft678920222修改配置文件,在上述的配置文件中的command1之前添加:代码茜心2,24的还有一个常用的用法:对于异常的过滤。当抛出异常时,最终中会返回到最开始的调用处。有时期望不抛出这些异常,而在内部消化掉,那么就可以利用。因为确保会调用已经执行了方法的的方法,即使在出现异常时也是如此。因此,对应的方法可以写为:226返回/表示非空异常已被处理,无需再抛出。27 否则,异常会被抛出2829305.对于复杂的Chain,可能

20、需要使用内嵌的Chain,内嵌Chain可以类比一个子过程。此时,可以使用LookupCommand。以例1为例,假设其中的command2需要扩展成为一个子过程,那么配置文件修改如下:代码茜124567891011121314151617181920其中,optional如果设为true,那么如果没有找到对应的类时,程序不会抛出异常。此时,仿佛命令不存在一样。如果为false,那么在找不到对应的类时,会抛出异常。6.的使用。配置文件的引入,使得CommonsChain的灵活性大大的提高。在实际的使用过程中,存在着同一个Command被多个Chain使用的情形。如果每次都书写Command的类

21、名,尤其是前面的包名特别长的情况下,是非常枯燥的。而的作用就是为了解决这样的麻烦。通过定义Command和Chain的别名,来简化书写。例5的配置文件,可以书写成代码迢茜12223 的别名,以后直接使用即可242ame=c2627282930,1,2333433637383940414243Commons-Discovery.jar:使用ApacheCommons的Discovery工具包可以实现接口和实现的分离,包括JARSPI规范的简单实现。Discovery组件被用以查找可插拔接口的实现实例,它提供了一种通用的实例化这些实现的方式,而且可以管理单例(工厂)的生命周期。本质上来讲,就是定位

22、那些实现了给定Java接口的类,并实例化。除此之外,Discovery还可以用以在给定的classpath中查找并加载资源文件。Discovery组件在查找所有的实现类的时候需要预先将允许被查找的实现类配置到默认的配置文件中,默认的配置文件为:/META-INF/services/,Discovery将依次加载该文件中配置的允许加载的实现类。另外接口和实现类的映射关系也可以在一个properties配置文件中定义,格式是:XXX(接口类名)=XXXimpl(实现类名)结合面向接口的编程方法,可以实现一个简单的面向服务的调用方式。7 使用方式直接产生接口实现的实例898 也可以使用的方式返回对应

23、的实现类121,4/*1完整程序中使用了的对返回的实现类进行了增强,可以实现一个简单的面向方面的程序结构:1617*/18创建一个类装入器的实例的实例来查找实现类1920,12223242526272829303132333435363738394041424344454647484950515253545556575859606162ex.printStackTrace();64 无法获取指定的服务项6565 returinmpl;67Commons-Pooljar:(参考)ommonsPool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以有效地减少处理对象池化

24、时的工作量,为其它重要的工作留下更多的精力和时间。恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率。PoolableObjectFactory、ObjectPool和ObjectPoolFactory在Pool组件中,对象池化的工作被划分给了三类对象:PoolableObjectFactory用于管理被池化的对象的产生、激活、挂起、校验和销毁;ObjectPool用于管理要被池化的对象的借出和归还,并通知PoolableObjectFactory完成相应的工作;ObjectPoolFactory则用于大量生成相同类型和设置的ObjectPool。相应地,使用P

25、ool组件的过程,也大体可以划分成“创立PoolableObjectFactory”、“使用ObjectPool”和可选的“利用ObjectPoolFactory”三种动作。创立PoolableObjectFactoryPool组件利用PoolableObjectFactory来照看被池化的对象。ObjectPool的实例在需要处理被池化的对象的产生、激活、挂起、校验和销毁工作时,就会调用跟它关联在一起的PoolableObjectFactory实例的相应方法来操作。PoolableObjectFactory是在mons.pool包中定义的一个接口。实际使用的时候需要利用这个接口的一个具体实现

26、。Pool组件本身没有包含任何一种PoolableObjectFactory实现,需要根据情况自行创立。创立PoolableObjectFactory的大体步骤是:创建一个实现了PoolableObjectFactory接口的类。代码总茜,256789,0为这个类添加一个ObjectmakeObject()方法。这个方法用于在必要时产生新的对象。代码-FC11121,14为这个类添加一个voidactivateObject(Objectobj)方法。这个方法用于将对象“激活”设置为适合开始使用的状态。代码耳茜16171819202122为这个类添加一个voidpassivateObject(O

27、bjectobj)方法。这个方法用于将对象“挂起”设置为适合开始休眠的状态。publicvoidpassivateObject(Objectobj)throwsExceptionSystem.err.println(PassivatingObject+obj);为这个类添加一个booleanvalidateObject(Objectobj)方法。这个方法用于校验一个具体的对象是否仍然有效,已失效的对象会被自动交给destroyObject方法销毁代码一佥c2324226272829,0,14353638为这个类添加一个voiddestroyObject(Objectobj)方法。这个方法用于销

28、毁被validateObject判定为已失效的对象。代码屁茜3940414243444,使用ObjectPool有了合适的PoolableObjectFactory之后,便可以开始请出ObjectPool来与之同台演出了。ObjectPool是在mons.pool包中定义的一个接口,实际使用的时候也需要利用这个接口的一个具体实现。Pool组件本身包含了若干种现成的ObjectPool实现,可以直接利用。如果都不合用,也可以根据情况自行创建。具体的创建方法,可以参看Pool组件的文档和源码。ObjectPool的使用方法类似这样:生成一个要用的PoolableObjectFactory类的实例。

29、代码总1 PoolableObjectFancetwoProyolfaabclteoOrbyje=ctFact利用这个PoolableObjectFactory实例为参数,生成一个实现了ObjectPool接口的类(例如StackObjectPool)的实例,作为对象池。代码总茜心2 ObjectPoonlewpSotoalck=ObjectPool(fac需要从对象池中取出对象时,调用该对象池的ObjectborrowObject()方法。代码迢茜3 Objectnoubl;jl=32需要将对象放回对象池中时,调用该对象池的voidreturnObject(Objectobj)方法。代码茜:

30、7当不再需要使用一个对象池时,调用该对象池的voidclose()方法,释放它所占据的资源。代码总茜这些操作都可能会抛出异常,需要另外处理。另外,ObjectPool接口还定义了几个可以由具体的实现决定要不要支持的操作,包括:voidclear()清除所有当前在此对象池中休眠的对象。intgetNumActive()返回已经从此对象池中借出的对象的总数。intgetNumIdle()返回当前在此对象池中休眠的对象的数目。voidsetFactory(PoolableObjectFactoryfactory)将当前对象池与参数中给定的PoolableObjectFactory相关联。如果在当前状

31、态下,无法完成这一操作,会有一个川egalStateException异常抛出。利用ObjectPoolFactory有时候,要在多处生成类型和设置都相同的ObjectPool。如果在每个地方都重写一次调用相应构造方法的代码,不但比较麻烦,而且日后修改起来,也有所不便。这种时候,正是使用ObjectPoolFactory的时机。ObjectPoolFactory是一个在mons.pool中定义的接口,它定义了一个称为ObjectPoolcreatePool()方法,可以用于大量生产类型和设置都相同的ObjectPool。Pool组件中,对每一个ObjectPool实现,都有一个对应的Objec

32、tPoolFactory实现。它们相互之间,有一一对应的参数相同的构造方法。使用的时候,只要先用想要的参数和想用的ObjectPoolFactory实例,构造出一个ObjectPoolFactory对象,然后在需要生成ObjectPool的地方,调用这个对象的createPool()方法就可以了。日后无论想要调整所用ObjectPool的参数还是类型,只需要修改这一处,就可以大功告成了。101112131151,17119202122232252,27229303132333353,37使得在你可以在应用和中容易的加入强大和咼性能的文件上传能力。上传文件到指定的目录。上传文件到指定的目录,并限

33、定文件大小。利用来实现文件上传。参考利用来实现文件上传。参考servlet上传文件的目录临时文件目录设置缓冲区大小,这里是设置缓冲区目录代码总pa2,4imim78910im121,14im1im1617S18pu192021222324226272829,0,132,343363738设置最大文件尺寸,这里是3,40有的文件41424344454647484, 50 51 Syst52 catc(hExcept53 可以跳转出/错/页面54 e.pr55 56 57585, Fileunpelw60if(!uploadF61uplo6263 Filetenme64 if(!tempPat65 temp66 67 68得到所html代码1234567对应的设10111213,41516web.xml代码茜厲171s1920 /se2122ser23 s24 u25 /se

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!