commons-io.jar:
可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的Stream,reader与writer实现.
commons-beanutils.jar:
提供对Java 反射和自省API的包装,主要提供了对于JavaBean进行各种操作。
commons-digester.jar:
它能方便地将XML文档所定义的元素转化为JAVA对象,其实它的用法有点象栈(当然内在的原理就是那个古老的东西,只是提供了更高一层的封装)。
commons-lang.jsr:
它 扩展了标准 java.lang API,增加了字符串操作方法、基本数值方法、对象反射、创建和串行化以及 System 属性。它还包含一个可继承的 enum 类型、对多种嵌套的 Exception 类型的支持、对 java.util.Date 的增强以及用于构建方法的实用程序,例如 自动生成 toString() 的结果、自动实现 hashCode() 和 equals() 方法、数组操作、枚举、日期和时间的处理等等。
· ArrayUtils –用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等;
· BitField –用于操作位元,提供了一些方便而安全的方法;
· BooleanUtils –用于操作和转换boolean或者Boolean及相应的数组;
· CharEncoding –包含了Java环境支持的字符编码,提供是否支持某种编码的判断;
· CharRange –用于设定字符范围并做相应检查;
· CharSet –用于设定一组字符作为范围并做相应检查;
· CharSetUtils –用于操作CharSet;
· CharUtils –用于操作char值和Character对象;
· ClassUtils –用于对Java类的操作,不使用反射;
· ObjectUtils –用于操作Java对象,提供null安全的访问和其他一些功能;
· RandomStringUtils –用于生成随机的字符串;
· SerializationUtils –用于处理对象序列化,提供比一般Java序列化更高级的处理能力;
· StringEscapeUtils –用于正确处理转义字符,产生正确的Java、JavaScript、HTML、XML和SQL代码;
· StringUtils –处理String的核心类,提供了相当多的功能;
· SystemUtils –在java.lang.System基础上提供更方便的访问,如用户路径、Java版本、时区、操作系统等判断;
· Validate –提供验证的操作,有点类似assert断言;
· WordUtils –用于处理单词大小写、换行等。
commons-codec.jar:
包含一些通用的编码解码算法。包括一些语音编码器, Hex, Base64, 以及URL encoder。
// MD5
String str = "abc";
DigestUtils.md5Hex(str);
// SHA1
String str = "abc";
DigestUtils.shaHex(str);
// BASE64
// 加密
String str= "abc"; // abc为要加密的字符串
byte[] b = Base64.encodeBase64(str.getBytes(),true);
System.out.println(newString(b));
// 解密
String str = "YWJj"; // YWJj为要解密的字符串
byte[] b =Base64.decodeBase64(str.getBytes());
System.out.println(newString(b));
commons-collections .jar:
提供一个类包来扩展和增加标准的 Java Collection框架。
· Bag接口:适用于包含一个对象的多个拷贝的集合
· Buffer接口:适用于具有顺序的集合类,例如FIFOs(先进先出)
· BidiMap(双向映射):可以通过值查找键,也可以通过键查找值
· Map迭代器:提供了对映射的快速迭代
· 对类型检查进行了封装,确保特定类的实例可以被添加到集合中
· 对转换进行了封装,将集合中的对象转换成被加入时的类型
· 对集合进行组合,使多个集合看起来就像一个集合一样
· 有序映射和set,保持元素添加时的顺序,包括一个基于LRU的map
· 标识映射可以给予对象的==来比较对象,而不是基于equals方法
· 引用映射可以允许键and/or值可以有控制的进行回收
· 很多比较器的实现
· 很多迭代器的实现
· 从数组或者枚举到集合的适配器
· 用来测试或者创建典型set理论的集合属性,例如与、或、闭包
commons-dbutil.jar:
对传统操作数据库的类进行二次封装,可以把结果集转化成 List
(1)org.apache.commons.dbutils
DbUtils : 提供如关闭连接、装载 JDBC 驱动程序等常规工作的工具类
QueryRunner : 该类简单化了 SQL 查询,它与 ResultSetHandler 组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
QueryLoader : 属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。
(2)org.apache.commons.dbutils.handlers
ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
BeanHandler :将ResultSet中第一行的数据转化成类对象
BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
MapHandler :将ResultSet中第一行的数据存成Map映射
MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
(3)org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :该类是用来对sql语句执行完成之后的的数值进行null的替换。
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
importorg.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
importorg.apache.commons.dbutils.handlers.MapListHandler;
public class DbutilsJDBCTest{
public static voidmain(String[] args) {
Connectionconn = null;
StringjdbcURL = "jdbc:mysql://127.0.0.1:3306/publish?useUnicode=true&characterEncoding=GBK";
StringjdbcDriver = "com.mysql.jdbc.Driver";
try {
DbUtils.loadDriver(jdbcDriver);
//Username "root". Password "root"
conn =DriverManager.getConnection(jdbcURL, "root", "root");
QueryRunner qRunner = new QueryRunner();
System.out.println("***UsingMapListHandler***");
//以下部分代码采用Map存储方式,可以采用Bean的方式代替进行处理
List lMap= (List) qRunner.query(conn,
"selecttitle,authors from books", new MapListHandler());
//以下是处理代码,可以抽取出来
System.out.println("title ------------- authors");
for (int i = 0; i < lMap.size(); i++) {
Map vals = (Map)lMap.get(i);
System.out.println(vals.get("title")+"-------------"+vals.get("authors"));
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
}
/**
上例在处理结果集时,它把数据库中的每一行映射成一个Map,其中列名作为Key,该列对应的值作为Value存放,
查询的所有的数据一起放在一个List里,然后进行处理,当然,一个更明智的处理是直接返回List然后再单独进行处理。
事实上上例返回的结果集中的每一行不必放在一个Map里,你可以放在一个Bean里,
如果使用Bean而不是用Map,那么,你也许需要建立一个Bean,如下:
**/
package cn.qtone.test;
public class Book {
publicint id;
public String title;
public String authors ;
public StudentBean() {
}
public String getAuthors() {
return authors;
}
public void setAuthors(String authors) {
this.authors = authors;
}
public int getId() {
return id;
}
public void setId(int id){
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
/**
然后简单修改一下DbutilsJDBCTest 中的部分代码即可,代替之后的源代码如下:
**/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
importorg.apache.commons.dbutils.DbUtils;
importorg.apache.commons.dbutils.QueryRunner;
importorg.apache.commons.dbutils.handlers.BeanListHandler;
public class DbutilsJDBCTest{
public static voidmain(String[] args) {
Connection conn = null;
StringjdbcURL ="jdbc:mysql://127.0.0.1:3306/publish?useUnicode=true&characterEncoding=GBK";
StringjdbcDriver = "com.mysql.jdbc.Driver";
try {
DbUtils.loadDriver(jdbcDriver);
// Username "root".Password "root"
conn =DriverManager.getConnection(jdbcURL, "root", "root");
QueryRunner qRunner = new QueryRunner();
System.out.println("***UsingBeanListHandler ***");
//以下部分代码采用Map存储方式,可以采用Bean的方式代替进行处理
List lBeans = (List) qRunner.query(conn," selecttitle,authors from books ", newBeanListHandler(Book.class));
//以下是处理代码,可以抽取出来
System.out.println("title ------------- authors");
for (int i = 0; i < lBeans.size(); i++) {
Book vals= (Book) lBeans.get(i);
System.out.println(vals.getTitle()+"-------------"+ vals. getAuthors ());
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
}
/**
采用Map的方式即第一种方式性能要好的多,采用Bean性能比较低可能是因为采用反射的缘故,
采用反射的东东性能和不采用反射的还是有点差距。
**/
commons-mail.jar:
是对JavaMail进行封装从而简化其操作,
功能:简单文本邮件、带附件的邮件、HTML格式的邮件