前言
Apache Commons 工具類大家都有用過,但是可能缺乏系統學習,只用到了一小部分功能,無法發揮極限的價值,大白話說就是,一顆好白菜都讓豬給拱了!
代碼過多,手機觀看效果不佳,建議收藏後在電腦上靜悄悄地看。因內容健康,可大膽轉發,即使未滿十八歲,在沒有家長陪同下也一樣可以觀看!
1、BeanUtils提供了對於JavaBean進行各種操作, 比如對象,屬性複製等等。
public class Person {
private String name = "";
private String email = "";
private int age;
}
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 {
public static void main(String[] args) {
Person person = new Person();
person.setName("tom");
person.setAge(21);
try {
Person person2 = (Person)BeanUtils.cloneBean(person);
System.out.println(person2.getName()+">>"+person2.getAge());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
Map map = new HashMap();
map.put("name","tom");
map.put("email","tom@");
map.put("age","21");
Person person = new Person();
BeanUtils.populate(person,map);
Map map = BeanUtils.describe(person)
2.BetwixtXML與Java對象之間相互轉換。
public class Person{
private String name;
private int age;
public PersonBean() {
}
public PersonBean(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "PersonBean[name='" + name + "',age='" + age + "']";
}
}
import java.io.StringWriter;
import org.apache.commons.betwixt.io.BeanWriter;
public class WriteApp {
public static final void main(String [] args) throws Exception {
StringWriter outputWriter = new StringWriter();
outputWriter.write(「<?xml version=』1.0′ encoding=』UTF-8′ ?>
」);
BeanWriter beanWriter = new BeanWriter(outputWriter);
beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
beanWriter.getBindingConfiguration().setMapIDs(false);
beanWriter.enablePrettyPrint();
beanWriter.write(「person」, new PersonBean(「John Smith」, 21));
System.out.println(outputWriter.toString());
outputWriter.close();
}
}
import java.io.StringReader;
import org.apache.commons.betwixt.io.BeanReader;
public class ReadApp {
public static final void main(String args[]) throws Exception{
StringReader xmlReader = new StringReader(
"<?xml version=』1.0′ encoding=』UTF-8′ ?> <person><age>25</age><name>James Smith</name></person>");
BeanReader beanReader = new BeanReader();
beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
beanReader.getBindingConfiguration().setMapIDs(false);
beanReader.registerBeanClass("person", PersonBean.class);
PersonBean person = (PersonBean) beanReader.parse(xmlReader);
System.out.println(person);
}
}
為什麼某些人會一直比你優秀,是因為他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜! 關注我,私信回復我「資料」
獲取免費的Java架構學習資料(裡面有高可用、高並發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構視頻學習資料以及電子書資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間「來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
3.Codec提供了一些公共的編解碼實現,比如Base64, Hex, MD5,Phonetic and URLs等等
4.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.collections5.Compress.set – 實現Set系列接口的一組類
5.Compresscommons compress中的打包、壓縮類庫。
6.Configuration用來幫助處理配置文件的,支持很多種存儲方式。
Properties filesXML documentsProperty list files (.plist)JNDIJDBC DatasourceSystem propertiesApplet parametersServlet parameters
7.DBCP(Database Connection Pool)是一個依賴Jakarta commons-pool對象池機制的資料庫連接池,Tomcat的數據源使用的就是DBCP。
8.DbUtilsApache組織提供的一個資源JDBC工具類庫,它是對JDBC的簡單封裝,對傳統操作資料庫的類進行二次封裝,可以把結果集轉化成List。,同時也不影響程序的性能。文章轉自肥朝大神
DbUtils類:啟動類
ResultSetHandler接口:轉換類型接口
MapListHandler類:實現類,把記錄轉化成List
BeanListHandler類:實現類,把記錄轉化成List,使記錄為JavaBean類型的對象
Qrery Runner類:執行SQL語句的類
9.Email提供的一個開源的API,是對javamail的封裝。
10.FileUploadjava web文件上傳功能。
11.HttpClient基於HttpCore實 現的一個HTTP/1.1兼容的HTTP客戶端,它提供了一系列可重用的客戶端身份驗證、HTTP狀態保持、HTTP連接管理module。
12.http://IO對http://java.io的擴展 操作文件非常方便。
13.Lang主要是一些公共的工具集合,比如對字符、數組的操作等等。
14.Logging提供的是一個Java 的日誌接口,同時兼顧輕量級和不依賴於具體的日誌實現工具。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class CommonLogTest {
private static Log log = LogFactory.getLog(CommonLogTest.class);
public static void main(String[] args) {
log.error("ERROR");
log.debug("DEBUG");
log.warn("WARN");
log.info("INFO");
log.trace("TRACE");
System.out.println(log.getClass());
}
}
15.Validator通用驗證系統,該組件提供了客戶端和伺服器端的數據驗證框架。
1.驗證日期
DateValidator validator = DateValidator.getInstance();
Date fooDate = validator.validate(fooString, "dd/MM/yyyy");
if (fooDate == null) {
return;
}
2.表達式驗證
boolean caseSensitive = false;
String regex1 = "^([A-Z]*)(?:\-)([A-Z]*)*$"
String regex2 = "^([A-Z]*)$";
String[] regexs = new String[] {regex1, regex1};
RegexValidator validator = new RegexValidator(regexs, caseSensitive);
boolean valid = validator.isValid("abc-def");
String result = validator.validate("abc-def");
String[] groups = validator.match("abc-def");
3.配置文件中使用驗證
<form-validation>
<global>
<validator name="required"
classname="org.apache.commons.validator.TestValidator"
method="validateRequired"
methodParams="java.lang.Object, org.apache.commons.validator.Field"/>
</global>
<formset>
</formset>
</form-validation>
添加姓名驗證.
<form-validation>
<global>
<validator name="required"
classname="org.apache.commons.validator.TestValidator"
method="validateRequired"
methodParams="java.lang.Object, org.apache.commons.validator.Field"/>
</global>
<formset>
<form name="nameForm">
<field property="firstName" depends="required">
<arg0 key="nameForm.firstname.displayname"/>
</field>
<field property="lastName" depends="required">
<arg0 key="nameForm.lastname.displayname"/>
</field>
</form>
</formset>
</form-validation>
4.驗證類
Excerpts from org.apache.commons.validator.RequiredNameTest
InputStream in = this.getClass().getResourceAsStream("validator-name-required.xml");
ValidatorResources resources = new ValidatorResources(in);
Name name = new Name();
Validator validator = new Validator(resources, "nameForm");
validator.setParameter(Validator.BEAN_PARAM, name);
Map results = null;
results = validator.validate();
if (results.get("firstName") == null) {
} else {
}