亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Apache Commons工具集簡介

2019-11-11 06:07:39
字體:
來源:轉載
供稿:網友

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

傳統方法如下:

//得到TeacherFormTeacherForm 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后,代碼就大大改觀了,如下所示:

//得到TeacherFormTeacherForm 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 objectOptions 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 valueString 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 files2. xml documents3. Property list files (.plist)4. JNDI5. JDBC Datasource6. System properties7. Applet parameters8. Servlet parameters

舉一個Properties的簡單例子:

# usergui.properties, definining the GUI,colors.background = #FFFFFFcolors.foreground = #000080window.width = 500window.height = 300PropertiesConfiguration config = new PropertiesConfiguration("usergui.properties");config.setProperty("colors.background", "#000000);config.save();config.save("usergui.backup.properties);//save a copyInteger 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 handlerObject[] 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 itemsFileItemFactory factory = new DiskFileItemFactory();// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Parse the requestList /* FileItem */ items = upload.parseRequest(request);// Process the uploaded itemsIterator 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://commons.apache.org/proper/commons-jxpath/users-guide.html

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

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

使用示例:

Address address = (Address)JXPathContext.newContext(vendor).getValue("locations[address/z上述代碼等同于:

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. FTP2. NNTP3. SMTP4. POP35. Telnet6. TFTP7. Finger8. Whois9. rexec/rcmd/rlogin10. Time (rdate) and Daytime11. Echo12. Discard13. 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 validatorDateValidator validator = DateValidator.getInstance();// Validate/Convert the dateDate 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. CIFS2. FTP3. Local Files4. HTTP and HTTPS5. SFTP6. Temporary Files7. WebDAV8. Zip, Jar and Tar (uncompressed, tgz or tbz2)9. gzip and bzip210. res11. ram

這個包的功能很強大,極大的簡化了程序對資源的訪問。

使用示例:

從jar中讀取文件:

// Locate the Jar fileFileSystemManager fsManager = VFS.getManager();FileObject jarFile = fsManager.resolveFile( "jar:lib/aJarFile.jar" );// List the children of the Jar fileFileObject[] 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);

 

其他的我覺得都還挺贊的,就是有一點,BeanUtils 不建議你使用,雖然它帶來的好處是減少了冗余代碼,但是帶來的問題是編譯期很多問題不會被找出來,然后就會出現運行期莫名其妙有些property為null了,特別是迭代更新比較快的項目,這樣做弊大于利,還有一點,從分層的角度來看,其實vo、bo、do等它代表的含義本來就不一樣,直接BeanUtils來拷貝,也是有點蛋疼的。

轉載至:https://my.oschina.net/u/2391658/blog/713541


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品亚州精品| 色综久久综合桃花网| 69av在线视频| 欧美午夜久久久| 91精品国产高清久久久久久久久| 久久午夜a级毛片| 国产一区二区三区在线播放免费观看| 欧美福利视频网站| 欧美日韩在线观看视频小说| 久久国产精品电影| 欧美视频中文字幕在线| 在线亚洲国产精品网| 欧美日韩美女在线| 91色p视频在线| 国产精品久久久久久五月尺| 欧美一级大胆视频| 国产97人人超碰caoprom| 久久亚洲国产成人| 国产在线98福利播放视频| 久久精品免费电影| 国内精品久久久久久中文字幕| 91伊人影院在线播放| 亚洲a∨日韩av高清在线观看| 欧洲日本亚洲国产区| 2018中文字幕一区二区三区| 97在线观看免费高清| 久久国产精品久久久久久久久久| 欧美一区二区三区免费观看| 国内精品一区二区三区四区| 色综合老司机第九色激情| 久久99亚洲精品| 欧美激情精品久久久久久免费印度| 中文字幕欧美视频在线| 中文字幕日韩欧美在线视频| 国产欧美日韩最新| 国产成人拍精品视频午夜网站| 久久香蕉精品香蕉| 色偷偷av一区二区三区| 亚洲免费视频在线观看| 色伦专区97中文字幕| 国产欧美va欧美va香蕉在线| 国产精品成av人在线视午夜片| 日韩欧美在线中文字幕| 国产精品午夜国产小视频| 国产精品久久久久久久久久久新郎| 亚洲在线免费视频| 欧美日韩国产页| 精品国产一区二区三区久久| 久久久久久久久综合| 亚洲欧美日韩成人| 成人做爰www免费看视频网站| 日韩久久免费电影| 国语自产精品视频在线看抢先版图片| 国产在线拍偷自揄拍精品| 亚洲国产精品资源| 91超碰caoporn97人人| www.亚洲一区| 最近2019免费中文字幕视频三| 高清在线视频日韩欧美| 国产精品一香蕉国产线看观看| 4p变态网欧美系列| 亚洲一区二区免费| 欧美日韩亚洲视频一区| 国产成人精品日本亚洲| 欧美日韩一区免费| 国内精品久久久久影院 日本资源| 欧美肥臀大乳一区二区免费视频| 成人福利网站在线观看11| 欧美性生交xxxxxdddd| 黑人与娇小精品av专区| 久久久噜久噜久久综合| 法国裸体一区二区| 亚洲午夜精品久久久久久久久久久久| 国产精品96久久久久久| 国产精品视频成人| 成人妇女淫片aaaa视频| 亚洲精品一区av在线播放| zzjj国产精品一区二区| 欧美日在线观看| 亚洲国产精品成人一区二区| 亚洲精品www久久久久久广东| 国产成人午夜视频网址| 欧美综合国产精品久久丁香| 色综合久久天天综线观看| 欧美乱妇高清无乱码| 久久久久女教师免费一区| 日韩美女视频中文字幕| 国内自拍欧美激情| 在线精品国产欧美| 国产在线精品播放| 亚洲精品久久7777777| 久久久女人电视剧免费播放下载| 久久久91精品国产一区不卡| 日韩av综合中文字幕| 欧美丰满少妇xxxxx| 亚洲国产精品va在线看黑人| 91精品国产高清久久久久久久久| 国产精品欧美激情在线播放| 亚洲自拍欧美色图| 精品久久中文字幕久久av| 国产成人一区二区三区电影| 岛国av在线不卡| 精品成人乱色一区二区| 亚洲三级免费看| 亚洲最大福利视频网| 国产精品无码专区在线观看| 亚洲成人精品视频在线观看| 国产在线视频欧美| 亚洲欧美在线第一页| 久久精品视频在线播放| 97在线免费观看| 亚洲人成毛片在线播放| 亚洲a在线播放| 欧美一区二区三区免费观看| 久久久免费在线观看| 久久999免费视频| 日韩激情视频在线播放| 久久人人97超碰精品888| 亚洲xxxx妇黄裸体| 欧美激情精品久久久久久变态| 精品视频久久久久久久| 91网站免费看| 国产一区二区三区视频免费| 久久黄色av网站| 国产精品成久久久久三级| 国产深夜精品福利| 精品久久久久久| 一区二区三区视频观看| 亚洲一区二区三区香蕉| 国产精品久久久久久五月尺| 日本三级久久久| 国产91热爆ts人妖在线| 欧美最顶级丰满的aⅴ艳星| 欧美性xxxx18| 国产日韩欧美黄色| 国产精品免费电影| 国产精品专区第二| 欧美最顶级丰满的aⅴ艳星| 中文字幕成人精品久久不卡| 欧美精品国产精品日韩精品| 欧美在线视频观看| 亚洲欧美综合精品久久成人| 中文字幕国产精品久久| 中文字幕日韩av| 正在播放国产一区| 国产精品99久久久久久www| 日韩视频在线观看免费| 精品亚洲男同gayvideo网站| 久久伊人免费视频| 日韩精品在线观看网站| 成人黄色免费网站在线观看| 奇米一区二区三区四区久久| 日韩性xxxx爱| 亚洲欧美在线免费观看| 欧美成人免费大片| 日本欧美在线视频| 亚洲国产99精品国自产| 欧美中在线观看| 5566日本婷婷色中文字幕97| 欧美国产日本在线| 久久久久久久影视| 久久99视频精品| 日韩综合视频在线观看| 日韩免费在线观看视频|