apache 最有用的包大全

common-lang (2.1)
ArrayUtils
常量中包含了基本類型(及其相對應類)的空數組。
提供向數組增加元素(包括增加單個元素或是整個數組),刪除元素,翻轉元素排列次序
克隆數組(基本類型)
查找數組中的元素(是否包含,返回索引)
獲得數組長度(null安全,返回爲0
數組是否爲空,數組是否相等,長度是否相等,元素類型是否相同,
基本類型對應類數組轉換成基本類型數組
轉成字符串
BooleanUtils
Boolean的轉換(可轉成intString
 
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中的項目我也沒有用過,只是現學現賣,難免錯誤和疏漏,希望諒解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章