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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Apache Commons组件集合

發(fā)布時(shí)間:2025/7/14 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Commons组件集合 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Apache Commons包含了很多開(kāi)源的工具,用于解決平時(shí)編程經(jīng)常會(huì)遇到的問(wèn)題,減少重復(fù)勞動(dòng)。我選了一些比較常用的項(xiàng)目做簡(jiǎn)單介紹。文中用了很多網(wǎng)上現(xiàn)成的東西,我只是做了一個(gè)匯總整理。?

一、Commons BeanUtils?

http://jakarta.apache.org/commons/beanutils/index.html

說(shuō)明:針對(duì)Bean的一個(gè)工具集。由于Bean往往是有一堆get和set組成,所以BeanUtils也是在此基礎(chǔ)上進(jìn)行一些包裝。
使用示例:功能有很多,網(wǎng)站上有詳細(xì)介紹。?

1、一個(gè)比較常用的功能是Bean Copy,也就是copy bean的屬性。如果做分層架構(gòu)開(kāi)發(fā)的話就會(huì)用到,比如從PO(Persistent Object)拷貝數(shù)據(jù)到VO(Value Object)。?

傳統(tǒng)方法如下:?

Java代碼
  • //得到TeacherForm????
  • TeacherForm?teacherForm=(TeacherForm)form;? ??
  • //構(gòu)造Teacher對(duì)象????
  • 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對(duì)象到數(shù)據(jù)庫(kù)????
  • HibernateDAO=?;? ??
  • HibernateDAO.save(teacher);???
  • Java代碼?
  • //得到TeacherForm???
  • TeacherForm?teacherForm=(TeacherForm)form;???
  • //構(gòu)造Teacher對(duì)象???
  • 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對(duì)象到數(shù)據(jù)庫(kù)???
  • HibernateDAO=?;???
  • HibernateDAO.save(teacher);???

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

    Java代碼?
  • //得到TeacherForm????
  • TeacherForm?teacherForm=(TeacherForm)form;? ??
  • //構(gòu)造Teacher對(duì)象????
  • Teacher?teacher=new?Teacher();? ??
  • //賦值????
  • BeanUtils.copyProperties(teacher,teacherForm);? ??
  • //持久化Teacher對(duì)象到數(shù)據(jù)庫(kù)????
  • HibernateDAO=?;? ??
  • HibernateDAO.save(teacher);???
  • Java代碼??
  • //得到TeacherForm???
  • TeacherForm?teacherForm=(TeacherForm)form;???
  • //構(gòu)造Teacher對(duì)象???
  • Teacher?teacher=new?Teacher();???
  • //賦值???
  • BeanUtils.copyProperties(teacher,teacherForm);???
  • //持久化Teacher對(duì)象到數(shù)據(jù)庫(kù)???
  • HibernateDAO=?;???
  • HibernateDAO.save(teacher);???


  • 2、copy單個(gè)value到bean中指定的property?
    public static void copyProperty(Object bean, String name, Object value)?
    3、實(shí)現(xiàn)對(duì)象的clone?
    public static Object cloneBean(Object bean)?
    相比:?
    SerializationUtils的?
    public static Object clone(Serializable object)?
    4、bean和map的相互轉(zhuǎn)換?
    public static Map describe(Object bean)?
    public static void populate(Object bean, Map properties)?
    5、get和set方法,忽略property的類型?
    public static String getProperty(Object bean, String name)?
    public static void setProperty(Object bean, String name, Object value)?
    二、Commons CLI?

    [url]http://jakarta.apache.org/commons/cli/index.html [/url]?

    說(shuō)明:這是一個(gè)處理命令的工具。比如main方法輸入的string[]需要解析。你可以預(yù)先定義好參數(shù)的規(guī)則,然后就可以調(diào)用CLI來(lái)解析。?

    使用示例:?

    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????
  • }???
  • 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?
    [url]?
    http://jakarta.apache.org/commons/codec/index.html [/url]?

    說(shuō)明:這個(gè)工具是用來(lái)編碼和解碼的,包括Base64,URL,Soundx等等。用這個(gè)工具的人應(yīng)該很清楚這些,我就不多介紹了。?

    四、Commons Collections?

    [url]http://jakarta.apache.org/commons/collections/ [/url]?

    說(shuō)明:你可以把這個(gè)工具看成是java.util的擴(kuò)展。?

    使用示例:舉一個(gè)簡(jiǎn)單的例子?

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

    [url]http://jakarta.apache.org/commons/configuration/ [/url]?

    說(shuō)明:這個(gè)工具是用來(lái)幫助處理配置文件的,支持很多種存儲(chǔ)方式?

    • 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



    使用示例:舉一個(gè)Properties的簡(jiǎn)單例子?

    Java代碼?
  • #?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");???
  • Java代碼??
  • #?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?

    [url]http://jakarta.apache.org/commons/dbcp/ [/url]?

    例子:?

    Java代碼?
  • import?java.sql.*;? ??
  • ??
  • import?com.gwnet.games.antiLord.util.*;? ??
  • ??
  • import?org.apache.commons.dbcp.ConnectionFactory;? ??
  • ??
  • import?org.apache.commons.dbcp.BasicDataSource;? ??
  • ??
  • import?org.apache.commons.dbcp.DataSourceConnectionFactory;? ??
  • ??
  • ??
  • ??
  • private?static?BasicDataSource?bds=new?BasicDataSource();? ??
  • ??
  • private?static?ConnectionFactory?fac=null;? ??
  • ??
  • ??
  • ??
  • //初始化連接池????
  • ??
  • bds.setDriverClassName(“org.postgresql.Driver”);?//數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序????
  • ??
  • bds.setUrl(“jdbc:postgresql://localhost:5432/myDB”);?//數(shù)據(jù)庫(kù)url????
  • ??
  • bds.setUsername(“postgres”);?//dba帳號(hào)????
  • ??
  • bds.setPassword(“XXXXXXXX”);?//密碼????
  • ??
  • bds.setInitialSize(100);?//初始化連接數(shù)量????
  • ??
  • bds.setMaxIdle(10);?//最大idle數(shù)????
  • ??
  • bds.setMaxWait(1000*60);?//超時(shí)回收時(shí)間????
  • ??
  • fac=new?DataSourceConnectionFactory(bds);?//得到連接工廠????
  • ??
  • Connection?conn=fac.createConnection();?//從池中獲得連接????
  • ??
  • conn.close();?//釋放連接,回到池中????
  • ??
  • ??
  • ??
  • //銷毀連接池????
  • ??
  • bds.close();? ??
  • bds=null;? ??
  • fac=null;???
  • Java代碼??
  • import?java.sql.*;???
  • ??
  • import?com.gwnet.games.antiLord.util.*;???
  • ??
  • import?org.apache.commons.dbcp.ConnectionFactory;???
  • ??
  • import?org.apache.commons.dbcp.BasicDataSource;???
  • ??
  • import?org.apache.commons.dbcp.DataSourceConnectionFactory;???
  • ??
  • ??
  • ??
  • private?static?BasicDataSource?bds=new?BasicDataSource();???
  • ??
  • private?static?ConnectionFactory?fac=null;???
  • ??
  • ??
  • ??
  • //初始化連接池???
  • ??
  • bds.setDriverClassName(“org.postgresql.Driver”);?//數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序???
  • ??
  • bds.setUrl(“jdbc:postgresql://localhost:5432/myDB”);?//數(shù)據(jù)庫(kù)url???
  • ??
  • bds.setUsername(“postgres”);?//dba帳號(hào)???
  • ??
  • bds.setPassword(“XXXXXXXX”);?//密碼???
  • ??
  • bds.setInitialSize(100);?//初始化連接數(shù)量???
  • ??
  • bds.setMaxIdle(10);?//最大idle數(shù)???
  • ??
  • bds.setMaxWait(1000*60);?//超時(shí)回收時(shí)間???
  • ??
  • fac=new?DataSourceConnectionFactory(bds);?//得到連接工廠???
  • ??
  • Connection?conn=fac.createConnection();?//從池中獲得連接???
  • ??
  • conn.close();?//釋放連接,回到池中???
  • ??
  • ??
  • ??
  • //銷毀連接池???
  • ??
  • bds.close();???
  • bds=null;???
  • fac=null;???

  • 七、Commons DbUtils?

    [url]http://jakarta.apache.org/commons/dbutils/ [/url]?

    說(shuō)明:我以前在寫數(shù)據(jù)庫(kù)程序的時(shí)候,往往把數(shù)據(jù)庫(kù)操作單獨(dú)做一個(gè)包。DbUtils就是這樣一個(gè)工具,以后開(kāi)發(fā)不用再重復(fù)這樣的工作了。值得一體的是,這個(gè)工具并不是現(xiàn)在流行的OR-Mapping工具(比如Hibernate),只是簡(jiǎn)化數(shù)據(jù)庫(kù)操作,比如?

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

    [url]http://jakarta.apache.org/commons/fileupload/ [/url]?

    說(shuō)明: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);? ??
  • }? ??
  • }???
  • 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?

    [url]http://jakarta.apache.org/commons/httpclient/ [/url]?

    說(shuō)明:這個(gè)工具可以方便通過(guò)編程的方式去訪問(wèn)網(wǎng)站。?

    使用示例:最簡(jiǎn)單的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();???
  • 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?

    [url]http://jakarta.apache.org/commons/io/ [/url]?

    說(shuō)明:可以看成是java.io的擴(kuò)展,我覺(jué)得用起來(lái)非常方便。?

    使用示例:?

    1.讀取Stream?

    標(biāo)準(zhǔn)代碼:?

    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();? ??
  • }???
  • 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);? ??
  • }???
  • 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");???
  • Java代碼??
  • File?file?=?new?File("/commons/io/project.properties");???
  • List?lines?=?FileUtils.readLines(file,?"UTF-8");???

  • 3.察看剩余空間?

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


  • 十一、Commons JXPath?

    [url]http://jakarta.apache.org/commons/jxpath/ [/url]?

    說(shuō)明:Xpath你知道吧,那么JXpath就是基于Java對(duì)象的Xpath,也就是用Xpath對(duì)Java對(duì)象進(jìn)行查詢。這個(gè)東西還是很有想像力的。?

    使用示例:?

    Java代碼?
  • Address?address?=?(Address)JXPathContext.newContext(vendor).? ??
  • getValue("locations[address/zipCode='90210']/address");???
  • Java代碼?
  • Address?address?=?(Address)JXPathContext.newContext(vendor).???
  • getValue("locations[address/zipCode='90210']/address");???


  • 上述代碼等同于?

    Java代碼?
  • 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;? ??
  • }? ??
  • }???
  • Java代碼??
  • 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?

    [url]http://jakarta.apache.org/commons/lang/ [/url]?

    說(shuō)明:這個(gè)工具包可以看成是對(duì)java.lang的擴(kuò)展。提供了諸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具類。?
    1、StringUtils?
    public static boolean isNotEmpty(String str)?
    public static String defaultString(String str)?
    2、StringEscapeUtils?
    public static String escapeHtml(String str)?
    public static void escapeJava(Writer out, String str)\public static String escapeJava(String str)?
    public static String escapeJavaScript(String str)?
    public static String escapeSql(String str)?
    public static String escapeXml(String str)?
    3、RandomStringUtils?
    public static String randomAlphanumeric(int count)?
    public static String random(int count)?
    4、SystemUtils?
    SystemUtils.getUserDir()?
    SystemUtils.FILE_ENCODING?
    SystemUtils.FILE_SEPARATOR?

    十三、Commons Logging?

    [url]http://jakarta.apache.org/commons/logging/ [/url]?

    說(shuō)明:你知道Log4j嗎??

    十四、Commons Math?

    [url]http://jakarta.apache.org/commons/math/ [/url]?

    說(shuō)明:看名字你就應(yīng)該知道這個(gè)包是用來(lái)干嘛的了吧。這個(gè)包提供的功能有些和Commons Lang重復(fù)了,但是這個(gè)包更專注于做數(shù)學(xué)工具,功能更強(qiáng)大。?

    十五、Commons Net?

    [url]http://jakarta.apache.org/commons/net/ [/url]?

    說(shuō)明:這個(gè)包還是很實(shí)用的,封裝了很多網(wǎng)絡(luò)協(xié)議。?

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

    [url]http://jakarta.apache.org/commons/validator/ [/url]?

    說(shuō)明:用來(lái)幫助進(jìn)行驗(yàn)證的工具。比如驗(yàn)證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;? ??
  • }???
  • 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?

    [url]http://jakarta.apache.org/commons/vfs/ [/url]?

    說(shuō)明:提供對(duì)各種資源的訪問(wèn)接口。支持的資源類型包括?

    • 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

    這個(gè)包的功能很強(qiáng)大,極大的簡(jiǎn)化了程序?qū)Y源的訪問(wèn)。?

    使用示例:?

    從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()?);? ??
  • }???
  • 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);??
  • 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-Email?

    commons-email是apache提供的一個(gè)開(kāi)源的API,是對(duì)javamail的封裝,因此在使用時(shí)要將javamail.jar加到 class path中,主要包括SimpleEmail,MultiPartEmail,HtmlEmail,EmailAttachment四個(gè)類。?

    SimpleEmail:發(fā)送簡(jiǎn)單的email,不能添加附件?
    MultiPartEmail:文本郵件,可以添加多個(gè)附件?
    HtmlEmail:HTML格式郵件,同時(shí)具有MultiPartEmail類所有“功能”?
    EmailAttchment:附件類,可以添加本地資源,也可以指定網(wǎng)絡(luò)上資源,在發(fā)送時(shí)自動(dòng)將網(wǎng)絡(luò)上資源下載發(fā)送。?

    發(fā)送基本文本格式郵件:?
    ==============?

    Java代碼?
  • SimpleEmail?email?=?new?SimpleEmail();? ??
  • //smtp?host????
  • email.setHostName("mail.test.com");? ??
  • //登陸郵件服務(wù)器的用戶名和密碼????
  • email.setAuthentication("test","testpassword");? ??
  • //接收人????
  • email.addTo("jdoe@somewhere.org",?"John?Doe");? ??
  • //發(fā)送人????
  • email.setFrom("me@apache.org",?"Me");? ??
  • //標(biāo)題????
  • email.setSubject("Test?message");? ??
  • //郵件內(nèi)容????
  • email.setMsg("This?is?a?simple?test?of?commons-email");? ??
  • //發(fā)送????
  • email.send();???
  • Java代碼??
  • SimpleEmail?email?=?new?SimpleEmail();???
  • //smtp?host???
  • email.setHostName("mail.test.com");???
  • //登陸郵件服務(wù)器的用戶名和密碼???
  • email.setAuthentication("test","testpassword");???
  • //接收人???
  • email.addTo("jdoe@somewhere.org",?"John?Doe");???
  • //發(fā)送人???
  • email.setFrom("me@apache.org",?"Me");???
  • //標(biāo)題???
  • email.setSubject("Test?message");???
  • //郵件內(nèi)容???
  • email.setMsg("This?is?a?simple?test?of?commons-email");???
  • //發(fā)送???
  • email.send();???


  • 發(fā)送文本格式,帶附件郵件:?
    ==================?

    Java代碼?
  • //附件,可以定義多個(gè)附件對(duì)象????
  • EmailAttachment?attachment?=?new?EmailAttachment();? ??
  • attachment.setPath("e:\\1.pdf");? ??
  • attachment.setDisposition(EmailAttachment.ATTACHMENT);? ??
  • attachment.setDescription("Picture?of?John");? ??
  • //????
  • MultiPartEmail?email?=?new?MultiPartEmail();? ??
  • //smtp?host????
  • email.setHostName("mail.test.com");? ??
  • //登陸郵件服務(wù)器的用戶名和密碼????
  • email.setAuthentication("test","testpassword");? ??
  • //接收人????
  • email.addTo("jdoe@somewhere.org",?"John?Doe");? ??
  • //發(fā)送人????
  • email.setFrom("me@apache.org",?"Me");? ??
  • //標(biāo)題????
  • email.setSubject("Test?message");? ??
  • //郵件內(nèi)容????
  • email.setMsg("This?is?a?simple?test?of?commons-email");? ??
  • //添加附件????
  • email.attach(attachment);? ??
  • //發(fā)送????
  • email.send();???
  • Java代碼??
  • //附件,可以定義多個(gè)附件對(duì)象???
  • EmailAttachment?attachment?=?new?EmailAttachment();???
  • attachment.setPath("e:\\1.pdf");???
  • attachment.setDisposition(EmailAttachment.ATTACHMENT);???
  • attachment.setDescription("Picture?of?John");???
  • //???
  • MultiPartEmail?email?=?new?MultiPartEmail();???
  • //smtp?host???
  • email.setHostName("mail.test.com");???
  • //登陸郵件服務(wù)器的用戶名和密碼???
  • email.setAuthentication("test","testpassword");???
  • //接收人???
  • email.addTo("jdoe@somewhere.org",?"John?Doe");???
  • //發(fā)送人???
  • email.setFrom("me@apache.org",?"Me");???
  • //標(biāo)題???
  • email.setSubject("Test?message");???
  • //郵件內(nèi)容???
  • email.setMsg("This?is?a?simple?test?of?commons-email");???
  • //添加附件???
  • email.attach(attachment);???
  • //發(fā)送???
  • email.send();???


  • 發(fā)送HTML格式帶附件郵件:?
    =================?

    Java代碼?
  • //附件,可以定義多個(gè)附件對(duì)象????
  • EmailAttachment?attachment?=?new?EmailAttachment();? ??
  • attachment.setPath("e:\\1.pdf");? ??
  • attachment.setDisposition(EmailAttachment.ATTACHMENT);? ??
  • attachment.setDescription("Picture?of?John");? ??
  • //????
  • HtmlEmail?email?=?new?HtmlEmail?();? ??
  • //smtp?host????
  • email.setHostName("mail.test.com");? ??
  • //登陸郵件服務(wù)器的用戶名和密碼????
  • email.setAuthentication("test","testpassword");? ??
  • //接收人????
  • email.addTo("jdoe@somewhere.org",?"John?Doe");? ??
  • //發(fā)送人????
  • email.setFrom("me@apache.org",?"Me");? ??
  • //標(biāo)題????
  • email.setSubject("Test?message");? ??
  • //郵件內(nèi)容????
  • email.setHtmlMsg("This?is?a?simple?test?of?commons-email");? ??
  • //添加附件????
  • email.attach(attachment);? ??
  • //發(fā)送???
  • Java代碼??
  • //附件,可以定義多個(gè)附件對(duì)象???
  • EmailAttachment?attachment?=?new?EmailAttachment();???
  • attachment.setPath("e:\\1.pdf");???
  • attachment.setDisposition(EmailAttachment.ATTACHMENT);???
  • attachment.setDescription("Picture?of?John");???
  • //???
  • HtmlEmail?email?=?new?HtmlEmail?();???
  • //smtp?host???
  • email.setHostName("mail.test.com");???
  • //登陸郵件服務(wù)器的用戶名和密碼???
  • email.setAuthentication("test","testpassword");???
  • //接收人???
  • email.addTo("jdoe@somewhere.org",?"John?Doe");???
  • //發(fā)送人???
  • email.setFrom("me@apache.org",?"Me");???
  • //標(biāo)題???
  • email.setSubject("Test?message");???
  • //郵件內(nèi)容???
  • email.setHtmlMsg("This?is?a?simple?test?of?commons-email");???
  • //添加附件???
  • email.attach(attachment);???
  • //發(fā)送???

  • 十九、 Commons Pool?

    使用Jakarta Commons Pool可以根據(jù)需要快速的實(shí)現(xiàn)自己的對(duì)象池,只需要實(shí)現(xiàn)PoolableObjectFactory或者KeyedPoolableObjectFactory接口。KeyedPoolableObjectFactory和PoolableObjectFactory的不同之處在于KeyedPoolableObjectFactory的每個(gè)方法都比PoolableObjectFactory多了一個(gè)Object key的參數(shù),使用這個(gè)參數(shù)可以使得對(duì)象池中的每個(gè)對(duì)象都有所不同。?
    PoolableObjectFactory定義了五個(gè)方法(摘至Jakarta Commons Pool API文檔):?

    • 1. makeObject is called whenever a new instance is needed.
    • 2. activateObject is invoked on every instance before it is returned from the pool.
    • 3. passivateObject is invoked on every instance when it is returned to the pool.
    • 4. destroyObject is invoked on every instance when it is being "dropped" from the pool (whether due to the response from validateObject, or for reasons specific to the pool implementation.)
    • 5. validateObject is invoked in an implementation-specific fashion to determine if an instance is still valid to be returned by the pool. It will only be invoked on an "activated" instance.


    二十、Commons Digester?

    它能方便地將XML文檔所定義的元素轉(zhuǎn)化為JAVA對(duì)象,其實(shí)它的用法有點(diǎn)象棧(當(dāng)然內(nèi)在的原理就是那個(gè)古老的東西,只是提供了更高一層的封裝)。?

    Java代碼?
  • //生成一個(gè)digester。主要需要引進(jìn)commons-logging.jar、commons-collections.jar、commons-?beanutils.jar????
  • Digester?digester?=?new?Digester();? ??
  • ??
  • //設(shè)置對(duì)XML文檔資料是否進(jìn)行DTD驗(yàn)證????
  • digester.setValidating(?false?);? ??
  • ??
  • //當(dāng)遇見(jiàn)?catalog?元素的時(shí)候,產(chǎn)生一個(gè)Catalog對(duì)象????
  • digester.addObjectCreate(?"catalog",?Catalog.class?);? ??
  • ??
  • //當(dāng)遇見(jiàn)?catalog?元素下面的book的時(shí)候,產(chǎn)生一個(gè)Book對(duì)象????
  • digester.addObjectCreate(?"catalog/book",?Book.class?);? ??
  • //?當(dāng)遇見(jiàn)?catalog?元素下面的book的author時(shí)候,調(diào)用author屬性的Set方法????
  • digester.addBeanPropertySetter(?"catalog/book/author",?"author"?);? ??
  • digester.addBeanPropertySetter(?"catalog/book/title",?"title"?);? ??
  • //當(dāng)再一次遇見(jiàn)?catalog?元素下面的book的時(shí)候,調(diào)用catalog類的addBook()方法????
  • digester.addSetNext(?"catalog/book",?"addBook"?);? ??
  • ??
  • digester.addObjectCreate(?"catalog/magazine",?Magazine.class?);? ??
  • digester.addBeanPropertySetter(?"catalog/magazine/name",?"name"?);? ??
  • ??
  • digester.addObjectCreate(?"catalog/magazine/article",?Article.class?);? ??
  • //addSetProperties()是將對(duì)應(yīng)元素的屬性賦值。????
  • digester.addSetProperties(?"catalog/magazine/article",?"page",?"page"?);? ??
  • digester.addBeanPropertySetter(?"catalog/magazine/article/headline"?);? ??
  • digester.addSetNext(?"catalog/magazine/article",?"addArticle"?);? ??
  • ??
  • digester.addSetNext(?"catalog/magazine",?"addMagazine"?);? ??
  • \Digester\\catalog.xml"為XML文檔????
  • File?input?=?new?File(?"F:\\Digester\\catalog.xml"?);? ??
  • Catalog?c?=?(Catalog)digester.parse(?input?);? ??
  • System.out.println(?c.toString()?);
  • 轉(zhuǎn)載于:https://www.cnblogs.com/hejiajunsh/archive/2013/02/06/2906478.html

    總結(jié)

    以上是生活随笔為你收集整理的Apache Commons组件集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美亚洲 | 69av在线 | 都市激情综合 | 国产网红在线观看 | 国产乱国产乱 | 午夜在线影院 | 亚洲 高清 成人 动漫 | 男女激情在线观看 | 国产极品视频 | 91肉色超薄丝袜脚交一区二区 | 久久婷婷视频 | 麻豆精品视频免费观看 | 色噜噜狠狠一区二区三区 | 奇米精品一区二区三区在线观看 | 老熟妇仑乱一区二区视频 | 边打电话边做 | 亚洲精品白虎 | 国产精品 欧美精品 | 中文字幕手机在线视频 | 亚洲免费观看av | 久热国产视频 | 日色视频 | 亚洲a v网站| 天堂男人av| 免费在线精品视频 | 日本成人福利视频 | 成人久草 | 日本亚洲一区 | 女人下面流白浆的视频 | 黄骗免费网站 | 亚洲美女性视频 | 麻豆久久久久久 | 一级片黄色片 | 鲁鲁久久 | 国产黄色免费视频 | 久久久久久久爱 | 国产激情影院 | 色婷婷一区| 精品人妻无码一区二区色欲产成人 | 丁香久久| av站| 日本一区二区不卡视频 | 青青草狠狠干 | 99热超碰在线 | 激情福利社 | 一级肉体全黄毛片 | 亚洲啪| 欧美色视频一区二区三区 | 亚洲情射 | 国产日批视频在线观看 | 国产亚洲高清视频 | 午夜免费小视频 | 国产乱码久久久久久 | 成人在线国产精品 | 毛片官网 | 天堂在线播放 | h视频免费在线 | 国产精品美女久久久久图片 | 人人干av| 国产免费一区二区视频 | 国产对白视频 | 在线欧美日韩国产 | 国产富婆一区二区三区 | 蜜臀久久精品 | 一区二区三区日韩视频 | 秋霞网av| 性欧美video另类hd尤物 | 人人射人人插 | 57pao国产成永久免费视频 | 香蕉久久夜色精品国产使用方法 | 精品久久一区 | 狠狠v欧美v日韩v亚洲ⅴ | 久久99久久99精品蜜柚传媒 | 人妻夜夜爽天天爽 | 亚洲一区二区三区在线免费观看 | 秋霞在线视频观看 | 诱人的乳峰奶水hd | 色呦| 欧美国产视频一区 | 红桃视频成人在线 | mm131美女大尺度私密照尤果 | 91嫩草欧美久久久九九九 | 偷偷操不一样的久久 | 国产高清一级片 | 久久99国产精品久久99果冻传媒 | 天天干天天噜 | 色欧洲 | 亚洲视频二| 91jk制服白丝超短裙大长腿 | 国产亚洲精品精品国产亚洲综合 | 中文字幕在线视频一区二区 | 国模私拍在线观看 | 911av| 亚洲福利小视频 | 一级大片视频 | 欧美aaa一级片 | 美国毛片基地 | 国产在线麻豆精品观看 | 在线视频a|