日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用Apache Commons工具类备忘

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用Apache Commons工具类备忘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常用Apache?Commons工具類

-----------------------------------------------------------------

例如:commons.lang包StringEscapeUtils工具類:

org.apache.commons.lang包中的StringEscapeUtils類。? 對用戶輸入的文本,或輸出的頁面內容進行編碼,處理< >等,過濾(編碼)危險字符。

?

例如:commons.lang包中的ArrayUtils工具類:
??????? boolean ArrayUtils.isEquals? 判斷兩個數組是否相等,采用EqualsBuilder進行判斷
??????? Map<Object,Object> ArrayUtils.toMap? 將一個數組轉換成Map,如果數組里是Entry則其Key與Value就是新Map的Key和Value,如果是Object[]則Object[0]為KeyObject[1]為Value
??????? boolean ArrayUtils.contains?? 查詢某個Object是否在數組中


例如:commons.collections包中的CollectionUtils工具類:
??????? Collection<String>? union = CollectionUtils.union(a, b); 并集
??????? Collection<String> intersection = CollectionUtils.intersection(a, b); 交集?
??????? Collection<String> disjunction = CollectionUtils.disjunction(a, b); 交集的補集

?

更多的類型:
org.apache.commons.lang.ArrayUtils ?
org.apache.commons.lang.DateUtils?? ?
org.apache.commons.lang.StringUtils?

?

?

?

Apache Commons工具集簡介

-----------------------------------------------------------------

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)。

使用BeanUtils后,代碼就大大改觀了,如下所示:

Java代碼?

?

  • //得到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來解析。

    使用示例:

    Java代碼?

    ?

  • //?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

    http://commons.apache.org/proper/commons-codec/javadocs/api-release/index.html

    說明:這個工具是用來編碼和解碼的,包括Base64,Hex,URLs,Phonetic等等。

    ?

    四、Commons Collections

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

    http://commons.apache.org/proper/commons-collections/apidocs/index.html

    說明:你可以把這個工具看成是java.util的擴展。

    使用示例:舉一個簡單的例子

    ?

    Java代碼?

    ?

  • 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文件

    Java代碼?

    ?

  • colors.background?=?#FFFFFF??
  • colors.foreground?=?#000080??
  • window.width?=?500??
  • window.height?=?300??
  • ?

    ?

    Java代碼?

    ?

  • 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),只是簡化數據庫操作,比如

    Java代碼?

    ?

  • 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的上傳文件功能怎么做呢?

    使用示例:

    Java代碼?

    ?

  • //?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操作

    Java代碼?

    ?

  • 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

    標準代碼:

    ?

    Java代碼?

    ?

  • 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

    ?

    Java代碼?

    ?

  • InputStream?in?=?new?URL(?"http://jakarta.apache.org"?).openStream();??
  • try?{??
  • ????System.out.println(?IOUtils.toString(?in?)?);??
  • }?finally?{??
  • ????IOUtils.closeQuietly(in);??
  • }??
  • ?

    ?

    2.讀取文件

    ?

    Java代碼?

    ?

  • File?file?=?new?File("/commons/io/project.properties");??
  • List?lines?=?FileUtils.readLines(file,?"UTF-8");??
  • ?

    ?

    3.察看剩余空間

    Java代碼?

    ?

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

    ?

    十一、Commons JXPath

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

    說明:Xpath你知道吧,那么JXpath就是基于Java對象的Xpath,也就是用Xpath對Java對象進行查詢。這個東西還是很有想像力的。

    使用示例:

    ?

    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

    使用示例:

    Java代碼?

    ?

  • 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字符串,日期字符串等是否合法。

    使用示例:

    ?

    Java代碼?

    ?

  • //?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中讀取文件

    Java代碼?

    ?

  • //?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讀取文件

    Java代碼?

    ?

  • 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);??
  • ?

    ?十八、Commons Virtual File System

    commons-compress
    The Apache Commons Compress library defines an API for working with ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200 and bzip2 files.

    ?

    from:?http://elf8848.iteye.com/blog/226328

    總結

    以上是生活随笔為你收集整理的常用Apache Commons工具类备忘的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。