<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    Commons BeanUtils
    http://jakarta.apache.org/commons/beanutils/index.html
    說明:針對Bean的一個工具集。由于Bean往往是有一堆get和set組成,所以BeanUtils也是在此基礎(chǔ)上進(jìn)行一些包裝。
    使用示例:功能有很多,網(wǎng)站上有詳細(xì)介紹。一個比較常用的功能是Bean Copy,也就是copy bean的屬性。如果做分層架構(gòu)開發(fā)的話就會用到,比如從PO(Persistent Object)拷貝數(shù)據(jù)到VO(Value Object)。
    傳統(tǒng)方法如下:
    //得到TeacherForm
     TeacherForm teacherForm=(TeacherForm)form;
     //構(gòu)造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對象到數(shù)據(jù)庫
     HibernateDAO= ;
     HibernateDAO.save(teacher);

    使用BeanUtils后,代碼就大大改觀了,如下所示:
    //得到TeacherForm
     TeacherForm teacherForm=(TeacherForm)form;
     //構(gòu)造Teacher對象
     Teacher teacher=new Teacher();
     //賦值
     BeanUtils.copyProperties(teacher,teacherForm);
     //持久化Teacher對象到數(shù)據(jù)庫
     HibernateDAO= ;
     HibernateDAO.save(teacher);

    Commons CLI
    http://jakarta.apache.org/commons/cli/index.html
    說明:這是一個處理命令的工具。比如main方法輸入的string[]需要解析。你可以預(yù)先定義好參數(shù)的規(guī)則,然后就可以調(diào)用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等等。用這個工具的人應(yīng)該很清楚這些,我就不多介紹了。

    Commons Collections
    http://jakarta.apache.org/commons/collections/
    說明:你可以把這個工具看成是java.util的擴(kuò)展。
    使用示例:舉一個簡單的例子
    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就是用的這個,不用我多說了吧,要用的自己去網(wǎng)站上看說明。

    Commons DbUtils
    http://jakarta.apache.org/commons/dbutils/
    說明:我以前在寫數(shù)據(jù)庫程序的時(shí)候,往往把數(shù)據(jù)庫操作單獨(dú)做一個包。DbUtils就是這樣一個工具,以后開發(fā)不用再重復(fù)這樣的工作了。值得一體的是,這個工具并不是現(xiàn)在流行的OR-Mapping工具(比如Hibernate),只是簡化數(shù)據(jù)庫操作,比如
    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/
    說明:這個工具可以方便通過編程的方式去訪問網(wǎng)站。
    使用示例:最簡單的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的擴(kuò)展,我覺得用起來非常方便。
    使用示例:
    1.讀取Stream
    標(biāo)準(zhǔn)代碼:
    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對象進(jìn)行查詢。這個東西還是很有想像力的。
    使用示例:
    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的擴(kuò)展。提供了諸如StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils等工具類。

    Commons Logging
    http://jakarta.apache.org/commons/logging/
    說明:你知道Log4j嗎?

    Commons Math
    http://jakarta.apache.org/commons/math/
    說明:看名字你就應(yīng)該知道這個包是用來干嘛的了吧。這個包提供的功能有些和Commons Lang重復(fù)了,但是這個包更專注于做數(shù)學(xué)工具,功能更強(qiáng)大。

    Commons Net
    http://jakarta.apache.org/commons/net/
    說明:這個包還是很實(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
    使用示例:
    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/
    說明:用來幫助進(jìn)行驗(yàn)證的工具。比如驗(yàn)證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 
    這個包的功能很強(qiáng)大,極大的簡化了程序?qū)Y源的訪問。
    使用示例:
    從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就像是丐幫,里面的項(xiàng)目多而雜。的確如此,Apache的項(xiàng)目水平參差不齊,而且不同的項(xiàng)目之間也常常會有功能重疊,甚至有撞車,比如Ant和Maven。不過Apache的優(yōu)秀項(xiàng)目還是有很多的,比如Apache Http Server,Tomcat,Ant, Geronimo等等。Apache Commons是工具包,為其他項(xiàng)目提供支持,很多Commons中的項(xiàng)目就是從其他項(xiàng)目中抽取出來的。希望我的介紹能對你有所幫助,有些我提到的Commons中的項(xiàng)目我也沒有用過,只是現(xiàn)學(xué)現(xiàn)賣,難免錯誤和疏漏,希望諒解。
    posted on 2008-05-04 10:27 周銳 閱讀(359) 評論(0)  編輯  收藏 所屬分類: ApacheJava
    主站蜘蛛池模板: 亚洲第一街区偷拍街拍| 亚洲愉拍一区二区三区| 亚洲中文字幕无码av| 一级黄色免费网站| 57pao国产成永久免费视频| 免费一看一级毛片全播放| 亚洲AV福利天堂一区二区三| 亚洲国产精品精华液| 国偷自产一区二区免费视频| 成年女人视频网站免费m | 亚洲精品国产摄像头| 91在线免费视频| 国产91免费视频| 亚洲午夜未满十八勿入网站2| 亚洲偷自拍拍综合网| 亚洲福利视频一区二区三区| 三年片在线观看免费观看大全中国| 国产亚洲精品国产福利在线观看| 亚洲日本VA午夜在线电影| 久久久久久久久久免免费精品 | 日韩在线观看免费| 成人黄色免费网站| 亚洲伊人久久成综合人影院| 亚洲人成人77777在线播放| 中文字幕版免费电影网站| 日韩在线视频免费看| 久久精品蜜芽亚洲国产AV| 一级毛片aa高清免费观看| 国产免费AV片在线播放唯爱网| 成人无遮挡毛片免费看| 水蜜桃亚洲一二三四在线| 免费人成动漫在线播放r18| 日韩av无码成人无码免费| 亚洲av无码成h人动漫无遮挡| 亚洲精品午夜在线观看| 无遮挡国产高潮视频免费观看| 久久久WWW成人免费精品| 永久免费看mv网站入口| 亚洲精品日韩中文字幕久久久| 亚洲欧美国产日韩av野草社区| 无码毛片一区二区三区视频免费播放|