Apache Commons工具集简介
文章出處
Apache Commons包含了很多開源的工具,用于解決平時編程經常會遇到的問題,減少重復勞動。下面是我這幾年做開發過程中自己用過的工具類做簡單介紹。
組件 功能介紹
BeanUtils 提供了對于JavaBean進行各種操作,克隆對象,屬性等等.
Betwixt XML與Java對象之間相互轉換.
Codec 處理常用的編碼方法的工具類包 例如DES、SHA1、MD5、Base64等.
Collections java集合框架操作.
Compress java提供文件打包 壓縮類庫.
Configuration 一個java應用程序的配置管理類庫.
DBCP 提供數據庫連接池服務.
DbUtils 提供對jdbc 的操作封裝來簡化數據查詢和記錄讀取操作.
Email java發送郵件 對javamail的封裝.
FileUpload 提供文件上傳功能.
HttpClien 提供HTTP客戶端與服務器的各種通訊操作. 現在已改成HttpComponents
IO io工具的封裝.
Lang Java基本對象方法的工具類包 如:StringUtils,ArrayUtils等等.
Logging 提供的是一個Java 的日志接口.
Validator 提供了客戶端和服務器端的數據驗證框架.
1、BeanUtils 提供了對于JavaBean進行各種操作, 比如對象,屬性復制等等。
Java代碼 收藏代碼
//1、 克隆對象
// 新創建一個普通Java Bean,用來作為被克隆的對象
// 再創建一個Test類,其中在main方法中代碼如下:
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
public class Test {
// 原理也是通過Java的反射機制來做的。
// 2、 將一個Map對象轉化為一個Bean
// 這個Map對象的key必須與Bean的屬性相對應。
Map map = new HashMap();
map.put(“name”,”tom”);
map.put(“email”,”tom@”);
map.put(“age”,”21”);
//將map轉化為一個Person對象
Person person = new Person();
BeanUtils.populate(person,map);
// 通過上面的一行代碼,此時person的屬性就已經具有了上面所賦的值了。
// 將一個Bean轉化為一個Map對象了,如下:
Map map = BeanUtils.describe(person)
2、Betwixt XML與Java對象之間相互轉換。
Java代碼 收藏代碼
//1、 將JavaBean轉為XML內容
// 新創建一個Person類
public class Person{
private String name;
private int age;
/* Need to allow bean to be created via reflection /
public PersonBean() {
}
public PersonBean(String name, int age) {
this.name = name;
this.age = age;
}
//省略set, get方法
public String toString() {
return “PersonBean[name=’” + name + “’,age=’” + age + “’]”;
}
}
//2、 將XML轉化為JavaBean
import java.io.StringReader;
import org.apache.commons.betwixt.io.BeanReader;
public class ReadApp {
public static final void main(String args[]) throws Exception{
// 先創建一個XML,由于這里僅是作為例子,所以我們硬編碼了一段XML內容
StringReader xmlReader = new StringReader(
“
usergui.properties
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”);
7、DBCP (Database Connection Pool)是一個依賴Jakarta commons-pool對象池機制的數據庫連接池,Tomcat的數據源使用的就是DBCP。
Java代碼 收藏代碼
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.PoolingDataSource;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
//官方示例
public class PoolingDataSources {
}
8、DbUtils Apache組織提供的一個資源JDBC工具類庫,它是對JDBC的簡單封裝,對傳統操作數據庫的類進行二次封裝,可以把結果集轉化成List。,同時也不影響程序的性能。
DbUtils類:啟動類
ResultSetHandler接口:轉換類型接口
MapListHandler類:實現類,把記錄轉化成List
BeanListHandler類:實現類,把記錄轉化成List,使記錄為JavaBean類型的對象
Qrery Runner類:執行SQL語句的類
Java代碼 收藏代碼
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
//轉換成list
public class BeanLists {
public static void main(String[] args) {
Connection conn = null;
String url = “jdbc:mysql://localhost:3306/ptest”;
String jdbcDriver = “com.mysql.jdbc.Driver”;
String user = “root”;
String password = “ptest”;
}
public class Person{
private Integer id;
private String name;
//省略set, get方法
}
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
//轉換成map
public class MapLists {
public static void main(String[] args) {
Connection conn = null;
String url = “jdbc:mysql://localhost:3306/ptest”;
String jdbcDriver = “com.mysql.jdbc.Driver”;
String user = “root”;
String password = “ptest”;
}
9、Email 提供的一個開源的API,是對javamail的封裝。
Java代碼 收藏代碼
//用commons email發送郵件
public static void main(String args[]){
Email email = new SimpleEmail();
email.setHostName(“smtp.googlemail.com”);
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator(“username”, “password”));
email.setSSLOnConnect(true);
email.setFrom(“user@gmail.com”);
email.setSubject(“TestMail”);
email.setMsg(“This is a test mail … :-)”);
email.addTo(“foo@bar.com”);
email.send();
}
10、FileUpload java web文件上傳功能。
Java代碼 收藏代碼
//官方示例:
//* 檢查請求是否含有上傳文件
// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
11、HttpClien 基于HttpCore實 現的一個HTTP/1.1兼容的HTTP客戶端,它提供了一系列可重用的客戶端身份驗證、HTTP狀態保持、HTTP連接管理module。
Java代碼 收藏代碼
//GET方法
import java.io.IOException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class GetSample{
public static void main(String[] args) {
// 構造HttpClient的實例
HttpClient httpClient = new HttpClient();
// 創建GET方法的實例
GetMethod getMethod = new GetMethod(“http://www.ibm.com“);
// 使用系統提供的默認的恢復策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
try {
// 執行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println(“Method failed: ”
+ getMethod.getStatusLine());
}
// 讀取內容
byte[] responseBody = getMethod.getResponseBody();
// 處理內容
System.out.println(new String(responseBody));
} catch (HttpException e) {
// 發生致命的異常,可能是協議不對或者返回的內容有問題
System.out.println(“Please check your provided http address!”);
e.printStackTrace();
} catch (IOException e) {
// 發生網絡異常
e.printStackTrace();
} finally {
// 釋放連接
getMethod.releaseConnection();
}
}
}
//POST方法
import java.io.IOException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class PostSample{
public static void main(String[] args) {
// 構造HttpClient的實例
HttpClient httpClient = new HttpClient();
// 創建POST方法的實例
String url = “http://www.oracle.com/“;
PostMethod postMethod = new PostMethod(url);
// 填入各個表單域的值
NameValuePair[] data = { new NameValuePair(“id”, “youUserName”),
new NameValuePair(“passwd”, “yourPwd”) };
// 將表單的值放入postMethod中
postMethod.setRequestBody(data);
// 執行postMethod
int statusCode = httpClient.executeMethod(postMethod);
// HttpClient對于要求接受后繼服務的請求,象POST和PUT等不能自動處理轉發
// 301或者302
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY ||
statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
// 從頭中取出轉向的地址
Header locationHeader = postMethod.getResponseHeader(“location”);
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println(“The page was redirected to:” + location);
} else {
System.err.println(“Location field value is null.”);
}
return;
}
}
}
12、IO 對java.io的擴展 操作文件非常方便。
Java代碼 收藏代碼
//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:/”);
13、Lang 主要是一些公共的工具集合,比如對字符、數組的操作等等。
Java代碼 收藏代碼
// 1 合并兩個數組: org.apache.commons.lang. ArrayUtils
// 有時我們需要將兩個數組合并為一個數組,用ArrayUtils就非常方便,示例如下:
private static void testArr() {
String[] s1 = new String[] { “1”, “2”, “3” };
String[] s2 = new String[] { “a”, “b”, “c” };
String[] s = (String[]) ArrayUtils.addAll(s1, s2);
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
String str = ArrayUtils.toString(s);
str = str.substring(1, str.length() - 1);
System.out.println(str + “>>” + str.length());
14、Logging 提供的是一個Java 的日志接口,同時兼顧輕量級和不依賴于具體的日志實現工具。
Java代碼 收藏代碼
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
15、Validator 通用驗證系統,該組件提供了客戶端和服務器端的數據驗證框架。
驗證日期
Java代碼 收藏代碼
// 獲取日期驗證
DateValidator validator = DateValidator.getInstance();
表達式驗證
Java代碼 收藏代碼
// 設置參數
boolean caseSensitive = false;
String regex1 = “^([A-Z])(?:\-)([A-Z])*”Stringregex2=“([A?Z]?)”;
String[] regexs = new String[] {regex1, regex1};
配置文件中使用驗證
Xml代碼 收藏代碼
總結
以上是生活随笔為你收集整理的Apache Commons工具集简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速开发
- 下一篇: GitHub优秀开源项目收集