首頁 Java java教程 java-類別庫-Apache Commons補充

java-類別庫-Apache Commons補充

Jan 19, 2017 pm 01:10 PM

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://jata .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
1. Properties files

2. XML documents

3. Property list files (.plist)

4. JNDI

5. JDBC
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/ 

pool:Database Connection Connection.apache.org/commons/dbcp/ 

pool:Database Connection Connection 就是用我用的這個,不用我說明多說了吧,要用的自己去網站看說明。

六、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的擴展,我覺得用java起來非常方便。

使用範例:

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對對象進行查詢。這個東西還是很有想像力的。

使用範例:


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

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);
登入後複製

以上就是java-类库-Apache Commons补充的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

h5項目怎麼運行 h5項目怎麼運行 Apr 06, 2025 pm 12:21 PM

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

如何在服務器端設置字符編碼以解決Bootstrap Table亂碼 如何在服務器端設置字符編碼以解決Bootstrap Table亂碼 Apr 07, 2025 pm 12:00 PM

要在服務器端設置字符編碼以解決 Bootstrap Table 亂碼,需要按以下步驟進行:檢查服務器字符編碼;編輯服務器配置文件;設置字符編碼為 UTF-8;保存並重啟服務器;驗證編碼。

H5:工具,框架和最佳實踐 H5:工具,框架和最佳實踐 Apr 11, 2025 am 12:11 AM

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

無法在 xampp 中啟動 mysql 無法在 xampp 中啟動 mysql Apr 08, 2025 pm 03:15 PM

XAMPP啟動MySQL失敗的原因有多種,包括端口衝突、配置文件錯誤、系統權限不足、服務依賴問題和安裝問題。排查步驟如下:1)檢查端口衝突;2)檢查配置文件;3)檢查系統權限;4)檢查服務依賴;5)重新安裝MySQL。遵循這些步驟,您可以找到並解決導致MySQL啟動失敗的問題。

Bootstrap頁面如何預覽 Bootstrap頁面如何預覽 Apr 07, 2025 am 10:06 AM

Bootstrap頁面的預覽方法有:直接在瀏覽器中打開HTML文件;使用Live Server插件自動刷新瀏覽器;搭建本地服務器模擬線上環境。

phpmyadmin漏洞匯總 phpmyadmin漏洞匯總 Apr 10, 2025 pm 10:24 PM

PHPMyAdmin安全防禦策略的關鍵在於:1. 使用最新版PHPMyAdmin及定期更新PHP和MySQL;2. 嚴格控制訪問權限,使用.htaccess或Web服務器訪問控制;3. 啟用強密碼和雙因素認證;4. 定期備份數據庫;5. 仔細檢查配置文件,避免暴露敏感信息;6. 使用Web應用防火牆(WAF);7. 進行安全審計。 這些措施能夠有效降低PHPMyAdmin因配置不當、版本過舊或環境安全隱患導致的安全風險,保障數據庫安全。

作曲家專業知識:是什麼使某人熟練 作曲家專業知識:是什麼使某人熟練 Apr 11, 2025 pm 12:41 PM

要在使用Composer時變得熟練,需要掌握以下技能:1.熟練使用composer.json和composer.lock文件,2.理解Composer的工作原理,3.掌握Composer的命令行工具,4.了解基本和高級用法,5.熟悉常見錯誤與調試技巧,6.優化使用和遵循最佳實踐。

See all articles