java apache commons_Java:Apache Commons 工具类介绍及简单使用

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。

Commons简介

组件

功能介绍

commons-beanutils

提供了对于JavaBean进行各种操作,克隆对象,属性等等.

commons-betwixt

XML与Java对象之间相互转换.

commons-codec

处理常用的编码方法的工具类包 例如DES、SHA1、MD5、Base64等.

commons-collections

java集合框架操作.

commons-compress

java提供文件打包 压缩类库.

commons-configuration

一个java应用程序的配置管理类库.

commons-dbcp

提供数据库连接池服务.

commons-dbutils

提供对jdbc 的操作封装来简化数据查询和记录读取操作.

commons-email

java发送邮件 对javamail的封装.

commons-fileupload

提供文件上传功能.

commons-httpclient

提供HTTP客户端与服务器的各种通讯操作. 现在已改成HttpComponents

commons-io

io工具的封装.

commons-lang

Java基本对象方法的工具类包 如:StringUtils,ArrayUtils,DateUtils,DateFormatUtils等等.

commons-logging

提供的是一个Java 的日志接口.

commons-validator

提供了客户端和服务器端的数据验证框架.

Maven依赖

commons-beanutils

commons-beanutils

1.9.3

commons-betwixt

commons-betwixt

0.8

commons-codec

commons-codec

1.10

org.apache.commons

commons-collections4

4.1

commons-collections

commons-collections

3.2.1

org.apache.commons

commons-compress

1.18

org.apache.commons

commons-configuration2

2.2

commons-configuration

commons-configuration

1.10

org.apache.commons

commons-dbcp2

2.1.1

commons-dbcp

commons-dbcp

1.4

commons-dbutils

commons-dbutils

1.6

org.apache.commons

commons-email

1.4

commons-email

commons-email

1.0

commons-fileupload

commons-fileupload

1.3.1

org.apache.httpcomponents

httpclient

4.5.12

commons-httpclient

commons-httpclient

3.1

commons-io

commons-io

2.6

org.apache.commons

commons-io

1.3.2

org.apache.commons

commons-lang3

3.9

commons-lang

commons-lang

2.6

commons-logging

commons-logging

1.2

commons-validator

commons-validator

1.6

1、commons-beanutils

提供了对于JavaBean进行各种操作, 比如对象,属性复制等等。

importjava.util.HashMap;importjava.util.Map;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.commons.beanutils.PropertyUtils;public classCommonsBeanUtils {public static void main(String[] args) throwsException {//****************************************************************************

Person person = newPerson();

person.setName("tom");

person.setAge(21);//克隆对象

Person person2 =(Person) BeanUtils.cloneBean(person);

System.out.println(person2.getName()+ ">>" +person2.getAge());//****************************************************************************

Map map = new HashMap();

map.put("name", "tom");

map.put("email", "tom@");

map.put("age", "21");//将map转化为一个Person对象

Person person3 = newPerson();

BeanUtils.populate(person3, map);

System.out.println(person3.getName()+ ">>" +person3.getAge());//通过上面的一行代码,此时person的属性就已经具有了上面所赋的值了。//将一个Bean转化为一个Map对象了,如下:

Map map2 =BeanUtils.describe(person3);

System.out.println(map2.get("name") + ">>" + map2.get("age"));//****************************************************************************

Person person4 = newPerson();

person4.setName("andy");//反射调用get方法

String name = (String) PropertyUtils.getProperty(person4, "name");

System.out.println(name);//反射调用set方法

PropertyUtils.setProperty(person4, "age", 25);

System.out.println(person4.getAge());

}

}

2、commons-betwixt

XML与Java对象之间相互转换。

importjava.io.StringReader;importjava.io.StringWriter;importorg.apache.commons.betwixt.io.BeanReader;importorg.apache.commons.betwixt.io.BeanWriter;public classCommonsBetwixt {public static void main(String[] args) throwsException {//****************************创建一个例子Bean,并将它转化为XML ************************************************//先创建一个StringWriter,我们将把它写入为一个字符串

StringWriter outputWriter = newStringWriter();//Betwixt在这里仅仅是将Bean写入为一个片断//所以如果要想完整的XML内容,我们应该写入头格式

outputWriter.write("\n");//创建一个BeanWriter,其将写入到我们预备的stream中

BeanWriter beanWriter = newBeanWriter(outputWriter);//配置betwixt//更多详情请参考java docs 或最新的文档

beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);

beanWriter.getBindingConfiguration().setMapIDs(false);

beanWriter.enablePrettyPrint();//如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么//但是让我们将例子Bean名作为根节点吧

beanWriter.write("person", new Person("John Smith", 21));//输出结果

System.out.println(outputWriter.toString());//Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams,//但这里仅仅是一个例子,不会做更多事情,所以可以关掉

outputWriter.close();//****************************将XML转化为JavaBean ************************************************//先创建一个XML,由于这里仅是作为例子,所以我们硬编码了一段XML内容

StringReader xmlReader = new StringReader(" 25James Smith");//创建BeanReader

BeanReader beanReader = newBeanReader();//配置reader

beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);

beanReader.getBindingConfiguration().setMapIDs(false);//注册beans,以便betwixt知道XML将要被转化为一个什么Bean

beanReader.registerBeanClass("person", Person.class);//现在我们对XML进行解析

Person person =(Person) beanReader.parse(xmlReader);//输出结果

System.out.println(person);

}

}

3、commons-codec

公共的编解码实现,比如Base64, Hex, MD5,Phonetic and URLs等等。

importorg.apache.commons.codec.binary.Base64;public classCommonsCodec {public static void main(String[] args) throwsException {

Base64 base64= newBase64();

String encodestr= base64.encodeToString("abcd".getBytes("UTF-8"));

System.out.println("Base64 编码后:" +encodestr);

String decodestr= new String(Base64.decodeBase64("YWJjZA=="));

System.out.println("Base64 解码后:"+decodestr);

}

}

4、commons-collections

对java.util的扩展封装,处理数据还是挺灵活的。

org.apache.commons.collections – Commons Collections自定义的一组公用的接口和工具类

org.apache.commons.collections.bag – 实现Bag接口的一组类

org.apache.commons.collections.bidimap – 实现BidiMap系列接口的一组类

org.apache.commons.collections.buffer – 实现Buffer接口的一组类

org.apache.commons.collections.collection – 实现java.util.Collection接口的一组类

org.apache.commons.collections.comparators – 实现java.util.Comparator接口的一组类

org.apache.commons.collections.functors – Commons Collections自定义的一组功能类

org.apache.commons.collections.iterators – 实现java.util.Iterator接口的一组类

org.apache.commons.collections.keyvalue – 实现集合和键/值映射相关的一组类

org.apache.commons.collections.list – 实现java.util.List接口的一组类

org.apache.commons.collections.map – 实现Map系列接口的一组类

org.apache.commons.collections.set – 实现Set系列接口的一组类

importjava.util.ArrayList;importjava.util.Collection;importjava.util.List;importorg.apache.commons.collections.BidiMap;importorg.apache.commons.collections.CollectionUtils;importorg.apache.commons.collections.OrderedMap;importorg.apache.commons.collections.bidimap.TreeBidiMap;importorg.apache.commons.collections.map.LinkedMap;public classCommonsCollections {public static voidmain(String[] args) {//得到集合里按顺序存放的key之后的某一Key

OrderedMap map = newLinkedMap ();

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"//通过key得到value 通过value得到key 将map里的key和value对调

BidiMap bidi = newTreeBidiMap();

bidi.put("SIX", "6");

bidi.get("SIX"); //returns "6"

bidi.getKey("6"); //returns "SIX"//bidi.removeValue("6");//removes the mapping

BidiMap inverse = bidi.inverseBidiMap(); //returns a map with keys and values swapped

System.out.println(inverse);//得到两个集合中相同的元素

List list1 = new ArrayList();

list1.add("1");

list1.add("2");

list1.add("3");

List list2 = new ArrayList();

list2.add("2");

list2.add("3");

list2.add("5");

Collection c=CollectionUtils.retainAll(list1, list2);

System.out.println(c);

}

}

5、commons-compress

commons compress中的打包、压缩类库。

importjava.io.File;importjava.io.FileInputStream;importorg.apache.commons.compress.archivers.zip.ZipArchiveEntry;importorg.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;public classCommonsCompress {public static void main(String[] args) throwsException {//创建压缩对象

ZipArchiveEntry entry = new ZipArchiveEntry("CompressTest");//要压缩的文件

File f = new File("e:\\test.pdf");

FileInputStream fis= newFileInputStream(f);//输出的对象 压缩的文件

ZipArchiveOutputStream zipOutput = new ZipArchiveOutputStream(new File("e:\\test.zip"));

zipOutput.putArchiveEntry(entry);int i = 0, j;while ((j = fis.read()) != -1) {

zipOutput.write(j);

i++;

System.out.println(i);

}

zipOutput.closeArchiveEntry();

zipOutput.close();

fis.close();

}

}

6、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

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、commons-dbcp

(Database Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。

importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.sql.DataSource;importorg.apache.commons.dbcp.ConnectionFactory;importorg.apache.commons.dbcp.DriverManagerConnectionFactory;importorg.apache.commons.dbcp.PoolableConnectionFactory;importorg.apache.commons.dbcp.PoolingDataSource;importorg.apache.commons.pool.ObjectPool;importorg.apache.commons.pool.impl.GenericObjectPool;public classCommonsDbcp {public static voidmain(String[] args) {

System.out.println("加载jdbc驱动");try{

Class.forName("oracle.jdbc.driver.OracleDriver");

}catch(ClassNotFoundException e) {

e.printStackTrace();

}

System.out.println("Done.");// System.out.println("设置数据源");

DataSource dataSource= setupDataSource("jdbc:oracle:thin:@localhost:1521:test");

System.out.println("Done.");// Connection conn = null;

Statement stmt= null;

ResultSet rset= null;try{

System.out.println("Creating connection.");

conn=dataSource.getConnection();

System.out.println("Creating statement.");

stmt=conn.createStatement();

System.out.println("Executing statement.");

rset= stmt.executeQuery("select * from person");

System.out.println("Results:");int numcols =rset.getMetaData().getColumnCount();while(rset.next()) {for (int i = 0; i <= numcols; i++) {

System.out.print("\t" +rset.getString(i));

}

System.out.println("");

}

}catch(SQLException e) {

e.printStackTrace();

}finally{try{if (rset != null)

rset.close();

}catch(Exception e) {

}try{if (stmt != null)

stmt.close();

}catch(Exception e) {

}try{if (conn != null)

conn.close();

}catch(Exception e) {

}

}

}public staticDataSource setupDataSource(String connectURI) {//设置连接地址

ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI, null);//创建连接工厂

PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, null, null, connectURI, false, false);//获取GenericObjectPool 连接的实例

ObjectPool connectionPool = newGenericObjectPool(poolableConnectionFactory);//创建 PoolingDriver

PoolingDataSource dataSource = newPoolingDataSource(connectionPool);returndataSource;

}

}

8、commons-dbutils

Apache组织提供的一个资源JDBC工具类库,它是对JDBC的简单封装,对传统操作数据库的类进行二次封装,可以把结果集转化成List。,同时也不影响程序的性能。

DbUtils类:启动类

ResultSetHandler接口:转换类型接口

MapListHandler类:实现类,把记录转化成List

BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象

Qrery Runner类:执行SQL语句的类

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.util.List;importjava.util.Map;importorg.apache.commons.dbutils.DbUtils;importorg.apache.commons.dbutils.QueryRunner;importorg.apache.commons.dbutils.handlers.BeanListHandler;importorg.apache.commons.dbutils.handlers.MapListHandler;public classCommonsDbutils {public static voidmain(String[] args) {

Connection conn= null;

String url= "jdbc:mysql://localhost:3306/ptest";

String jdbcDriver= "com.mysql.jdbc.Driver";

String user= "root";

String password= "ptest";

DbUtils.loadDriver(jdbcDriver);//****************************转换成list ************************************

try{

conn=DriverManager.getConnection(url, user, password);

QueryRunner qr= newQueryRunner();

List results= (List) qr.query(conn, "select id,name from person",new BeanListHandler(Person.class));for (int i = 0; i < results.size(); i++) {

Person p=(Person) results.get(i);

System.out.println("age:" + p.getAge() + ",name:" +p.getName());

}

}catch(SQLException e) {

e.printStackTrace();

}finally{

DbUtils.closeQuietly(conn);

}//****************************转换成map ************************************

try{

conn=DriverManager.getConnection(url, user, password);

QueryRunner qr= newQueryRunner();

List results= (List) qr.query(conn, "select age,name from person",newMapListHandler());for (int i = 0; i < results.size(); i++) {

Map map=(Map) results.get(i);

System.out.println("age:" + map.get("age") + ",name:"+ map.get("name"));

}

}catch(SQLException e) {

e.printStackTrace();

}finally{

DbUtils.closeQuietly(conn);

}

}

}

9、commons-email

提供的一个开源的API,是对javamail的封装。

importorg.apache.commons.mail.DefaultAuthenticator;importorg.apache.commons.mail.Email;importorg.apache.commons.mail.EmailException;importorg.apache.commons.mail.SimpleEmail;public classCommosEmail {public static void main(String[] args) throwsEmailException {

Email email= newSimpleEmail();

email.setHostName("smtp.googlemail.com");

email.setSmtpPort(465);

email.setAuthenticator(new DefaultAuthenticator("username", "password"));

email.setSSLOnConnect(true);

email.setFrom("[email protected]");

email.setSubject("TestMail");

email.setMsg("This is a test mail ... :-)");

email.addTo("[email protected]");

email.send();

}

}

10、commons-fileupload

java web文件上传功能。

//检查请求是否含有上传文件

boolean isMultipart =ServletFileUpload.isMultipartContent(request);//如果你的应用近于最简单的情况,上面的处理就够了。但我们有时候还是需要更多的控制。//下面提供了几种控制选择

DiskFileItemFactory factory = newDiskFileItemFactory();//Set factory constraints

factory.setSizeThreshold(yourMaxMemorySize);

factory.setRepository(yourTempDirectory);//Create a new file upload handler

ServletFileUpload upload = newServletFileUpload(factory);//设置最大上传大小

upload.setSizeMax(yourMaxRequestSize);//解析所有请求

List items =upload.parseRequest(request);//Create a factory for disk-based file items

DiskFileItemFactory factory = newDiskFileItemFactory(

yourMaxMemorySize, yourTempDirectory);//一旦解析完成,你需要进一步处理item的列表。

Iterator iter =items.iterator();while(iter.hasNext()) {

FileItem item=(FileItem) iter.next();if(item.isFormField()) {

processFormField(item);

}else{

processUploadedFile(item);

}

}//区分数据是否为简单的表单数据,如果是简单的数据

if(item.isFormField()) {

String name=item.getFieldName();

String value=item.getString();//...省略步骤

}//如果是提交的文件:

if (!item.isFormField()) {

String fieldName=item.getFieldName();

String fileName=item.getName();

String contentType=item.getContentType();boolean isInMemory =item.isInMemory();long sizeInBytes =item.getSize();//...省略步骤

}//对于这些item,我们通常要把它们写入文件,或转为一个流

if(writeToFile) {

File uploadedFile= newFile(...);

item.write(uploadedFile);

}else{

InputStream uploadedStream=item.getInputStream();//...省略步骤

uploadedStream.close();

}//或转为字节数组保存在内存中

byte[] data =item.get();//...省略步骤//如果这个文件真的很大,你可能会希望向用户报告到底传了多少到服务端,让用户了解上传的过程

ProgressListener progressListener = newProgressListener(){public void update(long pBytesRead, long pContentLength, intpItems) {

System.out.println("We are currently reading item " +pItems);if (pContentLength == -1) {

System.out.println("So far, " + pBytesRead + " bytes have been read.");

}else{

System.out.println("So far, " + pBytesRead + " of " +pContentLength+ " bytes have been read.");

}

}

};

upload.setProgressListener(progressListener);

11、commons-httpclient

基于HttpCore实 现的一个HTTP/1.1兼容的HTTP客户端,它提供了一系列可重用的客户端身份验证、HTTP状态保持、HTTP连接管理module。

importjava.io.IOException;import org.apache.commons.httpclient.*;importorg.apache.commons.httpclient.methods.GetMethod;importorg.apache.commons.httpclient.params.HttpMethodParams;public classCommonsHttpclient {public static voidmain(String[] args) {//构造HttpClient的实例

HttpClient httpClient = newHttpClient();//创建GET方法的实例

GetMethod getMethod = new GetMethod("http://www.ibm.com");//使用系统提供的默认的恢复策略

getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());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(newString(responseBody));

}catch(HttpException e) {//发生致命的异常,可能是协议不对或者返回的内容有问题

System.out.println("Please check your provided http address!");

e.printStackTrace();

}catch(IOException e) {//发生网络异常

e.printStackTrace();

}finally{//释放连接

getMethod.releaseConnection();

}//构造HttpClient的实例

HttpClient httpClient = newHttpClient();//创建POST方法的实例

String url = "http://www.oracle.com/";

PostMethod postMethod= newPostMethod(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、commons-io

对java.io的扩展 操作文件非常方便。

importjava.io.BufferedReader;importjava.io.File;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.URL;importjava.util.List;importorg.apache.commons.io.FileSystemUtils;importorg.apache.commons.io.FileUtils;importorg.apache.commons.io.IOUtils;public classCommonsIo {public static void main(String[] args) throwsException {//1.读取Stream//标准代码:

InputStream in = new URL("http://jakarta.apache.org").openStream();

InputStreamReader inR= newInputStreamReader(in);

BufferedReader buf= newBufferedReader(inR);

String line;while ((line = buf.readLine()) != null) {

System.out.println(line);

}

in.close();//使用IOUtils

InputStream in2 = new URL("http://jakarta.apache.org").openStream();try{

System.out.println(IOUtils.toString(in2));

}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、commos-lang

主要是一些公共的工具集合,比如对字符、数组的操作等等。

java apache commons_Java:Apache Commons 工具类介绍及简单使用_第1张图片

importjava.util.Calendar;importjava.util.Date;importorg.apache.commons.lang.ArrayUtils;importorg.apache.commons.lang.ClassUtils;importorg.apache.commons.lang.RandomStringUtils;importorg.apache.commons.lang.StringEscapeUtils;importorg.apache.commons.lang.StringUtils;importorg.apache.commons.lang.time.DateFormatUtils;importorg.apache.commons.lang.time.DateUtils;public classCommonsLang {public static void main(String[] args) throwsException {//********************************ArrayUtils***************************************//将两个数组合并为一个数组

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());//********************************StringUtils***************************************//截取从from开始字符串

StringUtils.substringAfter("SELECT * FROM PERSON ", "from");//判断该字符串是不是为数字(0~9)组成,如果是,返回true 但该方法不识别有小数点和请注意

StringUtils.isNumeric("454534"); //返回true//取得类名

System.out.println(ClassUtils.getShortClassName(CommonsLang.class));//取得其包名

System.out.println(ClassUtils.getPackageName(CommonsLang.class));//五位的随机字母和数字

System.out.println(RandomStringUtils.randomAlphanumeric(5));//StringEscapeUtils

System.out.println(StringEscapeUtils.escapeHtml(""));//输出结果为

System.out.println(StringEscapeUtils.escapeJava("String"));//StringUtils,判断是否是空格字符

System.out.println(StringUtils.isBlank(" "));//将数组中的内容以,分隔

System.out.println(StringUtils.join(s1, ","));//在右边加下字符,使之总长度为6

System.out.println(StringUtils.rightPad("abc", 6, 'T'));//首字母大写

System.out.println(StringUtils.capitalize("abc"));//Deletes all whitespaces from a String 删除所有空格

System.out.println(StringUtils.deleteWhitespace(" ab c "));//判断是否包含这个字符

System.out.println(StringUtils.contains("abc", "ba"));//表示左边两个字符

System.out.println(StringUtils.left("abc", 2));//********************************DateFormatUtils***************************************

System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));//直接将日期格式化为内置的固定格式

System.out.println(DateFormatUtils.ISO_DATE_FORMAT.format(newDate()));//字符型日期转化为Date

System.out.println(DateUtils.parseDate("2014-11-11 11:11:11", new String[] { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd", "yyyy/MM/dd"}));//日期舍入与截整

System.out.println(DateUtils.truncate(newDate(), Calendar.DATE));//判断是否是同一天

System.out.println(DateUtils.isSameDay(new Date(), newDate()));//加天数

System.out.println(DateUtils.addDays(new Date(), 10));

}

}

14、commos-logging

提供的是一个Java 的日志接口,同时兼顾轻量级和不依赖于具体的日志实现工具。

importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;public classCommosLogging {private static Log log = LogFactory.getLog(CommosLogging.class);public static voidmain(String[] args) {

log.error("ERROR");

log.debug("DEBUG");

log.warn("WARN");

log.info("INFO");

log.trace("TRACE");

System.out.println(log.getClass());

}

}

15、Validator

通用验证系统,该组件提供了客户端和服务器端的数据验证框架。

验证日期

//获取日期验证

DateValidator validator =DateValidator.getInstance();//验证/转换日期

Date fooDate = validator.validate(fooString, "dd/MM/yyyy");if (fooDate == null) {//错误 不是日期

return;

}

表达式验证

//设置参数

boolean caseSensitive = false;

String regex1= "^([A-Z]*)(?:\\-)([A-Z]*)*$"String regex2= "^([A-Z]*)$";

String[] regexs= newString[] {regex1, regex1};//创建验证

RegexValidator validator = newRegexValidator(regexs, caseSensitive);//验证返回boolean

boolean valid = validator.isValid("abc-def");//验证返回字符串

String result = validator.validate("abc-def");//验证返回数组

String[] groups = validator.match("abc-def");

你可能感兴趣的:(java,apache,commons)