Apache Commons

官方連接走起html

http://commons.apache.org/java

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中的項目就是從其餘項目中抽取出來的。數據庫

引用 :http://m.blog.csdn.net/blog/ocelight_11109/4510192apache

相關文章
相關標籤/搜索