Apache Commons工具集简介

common-lang (2.1)
ArrayUtils
常量中包含了基本类型(及其相对应类)的空数组。
提供向数组增加元素(包括增加单个元素或是整个数组),删除元素,翻转元素排列次序
克隆数组(基本类型)
查找数组中的元素(是否包含,返回索引)
获得数组长度( null 安全,返回为 0
数组是否为空,数组是否相等,长度是否相等,元素类型是否相同,
基本类型对应类数组转换成基本类型数组
转成字符串
BooleanUtils
Boolean 的转换(可转成 int String
 
CharUtils
针对 Char 的工具类包括判断是不是 ASCII 字符,是不是控制符可打印与否,转成整形
ClassUtils
获得包名,获得类的所有超类。
RandomStringUtils
随机字符串生成,可生成数字串,也可生成 Ascii 范围的字串
StringEscapeUtils
编码 / 解码 针对 xml/html/sql/javascript/java( 主要是转义标记符号等 )
StringUtils
String 的增强。类似 vb 的函数。截断、查找、替换、判断空、大小写、合并、分割,反写,对比
SerializationUtils
序列化工具类,将类转序列或反序列
SystemUtils
系统工具类,判断 JRE 版本,判断操作系统,判断字体 (AWT) ,获得 JAVA_HOME (及相关的所有环境变量),操作系统版本,时区、当前用户名,获得用户文件夹
Validate
校验器,判断集合里面所有的对象是否是某类,判断集合里面所有对象都非空,判断集合是否为空,判断数组、 Map 或字符串是否为空
WordUtils
将一个字符串中的单词首字大写;根据提供的每行字数将一个字符串断行
ToStringBuilder
toString 方法的增强类 , 可将对象转成字符串 ( 除了打出引用地址还会打出所有属性 ) 可设置显示的风格 (ToStringStyle, 抽象类 , 需继承实现后方可使用 )
EqualsBuilder
相等判断 , 例如以下语句 :
a = b == c
a = a && e == f
可转换成
a = new EqualsBuilder()
.append( b,c )
.append( e,f)
.isEquals();
HashCodeBuilder
获得哈希值
Enum
枚举型 , 看来会被 5.0 替代 .
ExceptionUtils
对异常的常见操作 , 获得堆栈 , 异常抛出方法名 , 错误链中对象数 ( 要这个干吗 ???)
RandomUtils
随机数据生成类 , 包括浮点 , 双精 , 布尔 , 整形 , 长整在内的随机数生成
NumberUtils
常用数字函数 , 最大值 , 最小值 , 字符串和数值转换
DateFormatUtils
格式化日期时间 , 支持默认格式 ( 即常量格式 ) 如下 :
ISO8601 ( 包含时区和不包含时区 )
SMTP 数据头格式
DateUtils
日期工具类 , 对比日期 , 削去部分数据 , 没啥用
FastDateFormat
SimpleDateFormat 的线程安全版本 , 听说速度更快
StopWatch
秒表 , 监控运行时间的常用工具 .
common-beanutils (1.7)
BeanUtils
克隆一个对象甚至他自身并未实现克隆方法
复制一个对象的属性至另一个对象
复制一个对象的指定属性至另一个对象
将一个对象的所有属性都到一个 Map
获得一个对象的一个数组属性
直接访问对象的 Map 类型的属性中的元素
将一个 Map 对象的键值复制到目标对象的相应属性
ConstructorUtils
从一个类获得其构造器
DynaBean
动态 Bean
Validator 1.1.4
看样子是从Struts里面剥离出来的,用用其工具类就OK了。其他的太繁琐。
CreditCardValidator
信用卡校验
DateValidator
日期校验,可根据给的日期模板( SimpleDateFormat )校验
EmailValidator
校验电子邮件,可以校验域名、用户名
GenericTypeValidator
将字符串转换成 Int/Double/Float/Long/Date/Byte
GenericValidator
常用校验器(静态方法),包括:字符串是否为空或者为 null ,字符串是否为 byte 。是否为信用卡,是否为日期(根据模板),是否为浮点数,是否为电邮,是否为双精数,是否在数值范围(类型:浮点,双精,整,长整,端整,字节),是否为 URL ,是否符合正则表达式,字符串是否超长,数值是否超过指定值,字符串是否过短,数值是否低于指定值
ISBNValidator
ISBN 校验器
UrlValidator
URL 校验器
Validator
校验器(需实例化),和资源文件关联

 

 

js 代码

  1. <script type="text/javascript"><!--   
  2. google_ad_client = "pub-4547838183514670";   
  3. google_ad_width = 468;   
  4. google_ad_height = 60;   
  5. google_ad_format = "468x60_as_rimg";   
  6. google_cpa_choice = "CAAQtYKvjAIaCCp3m2tiP3qxKIvN93MwAA";   
  7. google_ad_channel = "";   
  8. //-->   
  9. </script>   
  10. <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">   
  11. </script>  

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。我选了一些比较常用的项目做简单介绍。文中用了很多网上现成的东西,我只是做了一个汇总整理。

Commons BeanUtils

http://jakarta.apache.org/commons/beanutils/index.html

说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。

使用示例:功能有很多,网站上有详细介绍。一个比较常用的功能是Bean Copy,也就是copy bean的属性。如果做分层架构开发的话就会用到,比如从PO(Persistent Object)拷贝数据到VO(Value Object)。

传统方法如下:

//得到TeacherForm

 TeacherForm teacherForm=(TeacherForm)form;

 //构造Teacher对象

 Teacher teacher=new Teacher();

 //赋值

 teacher.setName(teacherForm.getName());

 teacher.setAge(teacherForm.getAge());

 teacher.setGender(teacherForm.getGender());

 teacher.setMajor(teacherForm.getMajor());

 teacher.setDepartment(teacherForm.getDepartment());

  

 //持久化Teacher对象到数据库

 HibernateDAO= ;

 HibernateDAO.save(teacher);

使用BeanUtils后,代码就大大改观了,如下所示:

//得到TeacherForm

 TeacherForm teacherForm=(TeacherForm)form;

 //构造Teacher对象

 Teacher teacher=new Teacher();

 //赋值

 BeanUtils.copyProperties(teacher,teacherForm);

 //持久化Teacher对象到数据库

 HibernateDAO= ;

 HibernateDAO.save(teacher);

Commons CLI

http://jakarta.apache.org/commons/cli/index.html

说明:这是一个处理命令的工具。比如main方法输入的string[]需要解析。你可以预先定义好参数的规则,然后就可以调用CLI来解析。

使用示例:

// create Options object

Options options = new Options();

// add t option, option is the command parameter, false indicates that 

// this parameter is not required.

options.addOption(“t”, false, “display current time”);

options.addOption("c", true, "country code");

CommandLineParser parser = new PosixParser();

CommandLine cmd = parser.parse( options, args);

if(cmd.hasOption("t")) {

    // print the date and time

}

else {

    // print the date

}

// get c option value

String countryCode = cmd.getOptionValue("c");

if(countryCode == null) {

    // print default date

}

else {

    // print date for country specified by countryCode

}

Commons Codec

http://jakarta.apache.org/commons/codec/index.html

说明:这个工具是用来编码和解码的,包括Base64,URL,Soundx等等。用这个工具的人应该很清楚这些,我就不多介绍了。

Commons Collections

http://jakarta.apache.org/commons/collections/

说明:你可以把这个工具看成是java.util的扩展。

使用示例:举一个简单的例子

OrderedMap map = new LinkedMap();

map.put("FIVE", "5");

map.put("SIX", "6");

map.put("SEVEN", "7");

map.firstKey();  // returns "FIVE"

map.nextKey("FIVE");  // returns "SIX"

map.nextKey("SIX");  // returns "SEVEN"

Commons Configuration

http://jakarta.apache.org/commons/configuration/

说明:这个工具是用来帮助处理配置文件的,支持很多种存储方式

1.    Properties files

2.    XML documents

3.    Property list files (.plist)

4.    JNDI

5.    JDBC Datasource

6.    System properties

7.    Applet parameters

8.    Servlet parameters

使用示例:举一个Properties的简单例子

# usergui.properties, definining the GUI,

colors.background = #FFFFFF

colors.foreground = #000080

window.width = 500

window.height = 300

PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");

config.setProperty("colors.background", "#000000);

config.save();

config.save("usergui.backup.properties);//save a copy

Integer integer = config.getInteger("window.width");

Commons DBCP

http://jakarta.apache.org/commons/dbcp/

说明:Database Connection pool, Tomcat就是用的这个,不用我多说了吧,要用的自己去网站上看说明。

Commons DbUtils

http://jakarta.apache.org/commons/dbutils/

说明:我以前在写数据库程序的时候,往往把数据库操作单独做一个包。DbUtils就是这样一个工具,以后开发不用再重复这样的工作了。值得一体的是,这个工具并不是现在流行的OR-Mapping工具(比如Hibernate),只是简化数据库操作,比如

QueryRunner run = new QueryRunner(dataSource);

// Execute the query and get the results back from the handler

Object[] result = (Object[]) run.query(

    "SELECT * FROM Person WHERE name=?", "John Doe");

Commons FileUpload

http://jakarta.apache.org/commons/fileupload/

说明:jsp的上传文件功能怎么做呢?

使用示例:

// Create a factory for disk-based file items

FileItemFactory factory = new DiskFileItemFactory();

// Create a new file upload handler

ServletFileUpload upload = new ServletFileUpload(factory);

// Parse the request

List /* FileItem */ items = upload.parseRequest(request);

// Process the uploaded items

Iterator iter = items.iterator();

while (iter.hasNext()) {

    FileItem item = (FileItem) iter.next();

    if (item.isFormField()) {

        processFormField(item);

    } else {

        processUploadedFile(item);

    }

}

Commons HttpClient

http://jakarta.apache.org/commons/httpclient/

说明:这个工具可以方便通过编程的方式去访问网站。

使用示例:最简单的Get操作

GetMethod get = new GetMethod("http://jakarta.apache.org");

// execute method and handle any error responses.

  ...

InputStream in = get.getResponseBodyAsStream();

// Process the data from the input stream.

 get.releaseConnection();

Commons IO

http://jakarta.apache.org/commons/io/

说明:可以看成是java.io的扩展,我觉得用起来非常方便。

使用示例:

1.读取Stream

标准代码:

InputStream in = new URL( "http://jakarta.apache.org" ).openStream();

 try {

   InputStreamReader inR = new InputStreamReader( in );

   BufferedReader buf = new BufferedReader( inR );

   String line;

   while ( ( line = buf.readLine() ) != null ) {

     System.out.println( line );

   }

 } finally {

   in.close();

 }

使用IOUtils

InputStream in = new URL( "http://jakarta.apache.org" ).openStream();

 try {

   System.out.println( IOUtils.toString( in ) );

 } finally {

   IOUtils.closeQuietly(in);

 }

2.读取文件

File file = new File("/commons/io/project.properties");

List lines = FileUtils.readLines(file, "UTF-8");

3.察看剩余空间

long freeSpace = FileSystemUtils.freeSpace("C:/");

Commons JXPath

http://jakarta.apache.org/commons/jxpath/

说明:Xpath你知道吧,那么JXpath就是基于Java对象的Xpath,也就是用Xpath对Java对象进行查询。这个东西还是很有想像力的。

使用示例:

Address address = (Address)JXPathContext.newContext(vendor).

         getValue("locations[address/zipCode='90210']/address");

上述代码等同于

Address address = null;

Collection locations = vendor.getLocations();

Iterator it = locations.iterator();

while (it.hasNext()){

    Location location = (Location)it.next();

    String zipCode = location.getAddress().getZipCode();

    if (zipCode.equals("90210")){

      address = location.getAddress();

      break;

    }

}

Commons Lang

http://jakarta.apache.org/commons/lang/

说明:这个工具包可以看成是对java.lang的扩展。提供了诸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具类。

Commons Logging

http://jakarta.apache.org/commons/logging/

说明:你知道Log4j吗?

Commons Math

http://jakarta.apache.org/commons/math/

说明:看名字你就应该知道这个包是用来干嘛的了吧。这个包提供的功能有些和Commons Lang重复了,但是这个包更专注于做数学工具,功能更强大。

Commons Net

http://jakarta.apache.org/commons/net/

说明:这个包还是很实用的,封装了很多网络协议。

1.    FTP

2.    NNTP

3.    SMTP

4.    POP3

5.    Telnet

6.    TFTP

7.    Finger

8.    Whois

9.    rexec/rcmd/rlogin

10.    Time (rdate) and Daytime

11.    Echo

12.    Discard

13.    NTP/SNTP

使用示例:

TelnetClient telnet = new TelnetClient();

telnet.connect( "192.168.1.99", 23 );

InputStream in = telnet.getInputStream();

PrintStream out = new PrintStream( telnet.getOutputStream() );

...

telnet.close();

Commons Validator

http://jakarta.apache.org/commons/validator/

说明:用来帮助进行验证的工具。比如验证Email字符串,日期字符串等是否合法。

使用示例:

// Get the Date validator

DateValidator validator = DateValidator.getInstance();

// Validate/Convert the date

Date fooDate = validator.validate(fooString, "dd/MM/yyyy");

if (fooDate == null) {

     // error...not a valid date

     return;

}

Commons Virtual File System

http://jakarta.apache.org/commons/vfs/

说明:提供对各种资源的访问接口。支持的资源类型包括

1.    CIFS 

2.    FTP 

3.    Local Files 

4.    HTTP and HTTPS 

5.    SFTP 

6.    Temporary Files 

7.    WebDAV 

8.    Zip, Jar and Tar (uncompressed, tgz or tbz2) 

9.    gzip and bzip2 

10.    res 

11.    ram 

这个包的功能很强大,极大的简化了程序对资源的访问。

使用示例:

从jar中读取文件

// Locate the Jar file

FileSystemManager fsManager = VFS.getManager();

FileObject jarFile = fsManager.resolveFile( "jar:lib/aJarFile.jar" );

// List the children of the Jar file

FileObject[] children = jarFile.getChildren();

System.out.println( "Children of " + jarFile.getName().getURI() );

for ( int i = 0; i < children.length; i++ )

{

    System.out.println( children[ i ].getName().getBaseName() );

}

从smb读取文件

StaticUserAuthenticator auth = new StaticUserAuthenticator("username", "password", null);

FileSystemOptions opts = new FileSystemOptions();

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth); 

FileObject fo = VFS.getManager().resolveFile("smb://host/anyshare/dir", opts);

    

有人说Apache就像是丐帮,里面的项目多而杂。的确如此,Apache的项目水平参差不齐,而且不同的项目之间也常常会有功能重叠,甚至有撞车,比如Ant和Maven。不过Apache的优秀项目还是有很多的,比如Apache Http Server,Tomcat,Ant, Geronimo等等。Apache Commons是工具包,为其他项目提供支持,很多Commons中的项目就是从其他项目中抽取出来的。希望我的介绍能对你有所帮助,有些我提到的Commons中的项目我也没有用过,只是现学现卖,难免错误和疏漏,希望谅解。

你可能感兴趣的:(apache,数据库,bean,Google,null,工具)