[轉]Apache Commons工具集
Apache Commons包含了很多開源的工具,用於解決平時程式設計經常會遇到的問題,減少重複勞動。我選了一些比較常用的專案做簡單介紹。文中用了很多網上現成的東西,我只是做了一個彙總整理。
Commons BeanUtils
說明:針對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);
說明:這是一個處理命令的工具。比如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
說明:這個工具是用來編碼和解碼的,包括Base64,URL,Soundx等等。用這個工具的人應該很清楚這些,我就不多介紹了。
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
說明:這個工具是用來幫助處理配置檔案的,支援很多種儲存方式
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
說明:Database Connection pool, Tomcat就是用的這個,不用我多說了吧,要用的自己去網站上看說明。
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
說明: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
說明:這個工具可以方便透過程式設計的方式去訪問網站。
使用示例:最簡單的Get操作
GetMethod get = new GetMethod("");
// execute method and handle any error responses.
...
InputStream in = get.getResponseBodyAsStream();
// Process the data from the input stream.
get.releaseConnection();
Commons IO
說明:可以看成是java.io的擴充套件,我覺得用起來非常方便。
使用示例:
1.讀取Stream
標準程式碼:
InputStream in = new URL( "" ).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( "" ).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
說明: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
說明:這個工具包可以看成是對java.lang的擴充套件。提供了諸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具類。
Commons Logging
說明:你知道Log4j嗎?
Commons Math
說明:看名字你就應該知道這個包是用來幹嘛的了吧。這個包提供的功能有些和Commons Lang重複了,但是這個包更專注於做數學工具,功能更強大。
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
說明:用來幫助進行驗證的工具。比如驗證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
說明:提供對各種資源的訪問介面。支援的資源型別包括
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中的專案我也沒有用過,只是現學現賣,難免錯誤和疏漏,希望諒解。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12058779/viewspace-1016144/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache Commons 工具集使用簡介Apache
- [Java SE] 基礎工具庫 : Apache Commons IOJavaApache
- Java工具類之Apache的Commons Lang和BeanUtilsJavaApacheBean
- Apache Commons IO入門教程Apache
- Apache Commons 系列簡介 之 PoolApache
- 使用Apache commons email傳送郵件ApacheAI
- Apache Commons Collections反序列化漏洞Apache
- org.apache.commons.lang.exception包的ExceptionUtils工具類獲取getFullStackTraceApacheException
- Apache實現weblogic叢集配置(轉)ApacheWeb
- java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactoryJavaExceptionApache
- JAVA SSH與Class 'org.apache.commons.dbcp.BasicDataSource' not foundJavaApache
- 通過 Apache Commons HttpClient 傳送 HTTPS 請求ApacheHTTPclient
- Apache Commons Codec:各種加密瞭解一下Apache加密
- Java:org.apache.commons.beanutils.BeanUtils拷貝物件屬性JavaApacheBean物件
- 烽火狼煙丨Apache Commons Text 任意程式碼執行漏洞Apache
- java程式設計之:org.apache.commons.lang3.text.StrTokenizerJava程式設計Apache
- 用Apache的commons-modeler來輔助開發JMXApache
- 談談Apache Jakarta Commons 下元件的學習和運用Apache元件
- 用 apache commons-email 輕鬆傳送無亂碼郵件ApacheAI
- oracle字符集轉換分析工具Oracle
- java apache commons HttpClient傳送get和post請求的學習整理JavaApacheHTTPclient
- Apache Kafka – 叢集架構ApacheKafka架構
- Java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 解決方案JavaErrorApache
- 文件提取工具 apache/tikaApache
- commons-lang包常用工具類的基本使用
- 很好用的壓測工具 - Apache Bench工具Apache
- java各種commons工具包的免費下載地址Java
- 線上sql轉proto/struct等(GO線上工具集)SQLStructGo
- Commons Email 【Z】AI
- JavaScript實現Apache .htaccess 轉化nginx生成器工具-toolfk程式設計師工具網JavaScriptApacheNginx程式設計師
- systemd工具集
- Apache加裝模組(轉)Apache
- APACHE WEB SERVER管理(轉)ApacheWebServer
- Windows + Apache + resin配置 (轉)WindowsApache
- Apache 版本介紹(轉)Apache
- Apache Ranger——Hadoop ACL控制工具ApacheRangerHadoop
- apache ap 併發測試工具Apache
- Apache2.4+Tomcat7叢集搭建ApacheTomcat