版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
組件功能介紹BeanUtils提供了對(duì)于JavaBean進(jìn)行各種操作,克隆對(duì)象,屬性等等.BetwixtXML與Java對(duì)象之間相互轉(zhuǎn)換.Codec處理常用的編碼方法的工具類包
例如DES、SHA1、MD5、Base64等.Collectionsjava集合框架操作.Compressjava提供文件打包壓縮類庫(kù).Configuration一個(gè)java應(yīng)用程序的配置管理類庫(kù).DBCP提供數(shù)據(jù)庫(kù)連接池服務(wù).DbUtils提供對(duì)jdbc
的操作封裝來(lái)簡(jiǎn)化數(shù)據(jù)查詢和記錄讀取操作.Emailjava發(fā)送郵件對(duì)javamail的封裝.FileUpload提供文件上傳功能.HttpClien提供HTTP客戶端與服務(wù)器的各種通訊操作.現(xiàn)在已改成HttpComponentsIOio工具的封裝.LangJava基本對(duì)象方法的工具類包如:StringUtils,ArrayUtils等等.Logging提供的是一個(gè)Java的日志接口.Validator提供了客戶端和服務(wù)器端的數(shù)據(jù)驗(yàn)證框架.1、BeanUtils
提供了對(duì)于JavaBean進(jìn)行各種操作,比如對(duì)象,屬性復(fù)制等等。[java]
\o"viewplain"viewplain\o"copy"copy//1、
克隆對(duì)象
//
新創(chuàng)建一個(gè)普通Java
Bean,用來(lái)作為被克隆的對(duì)象
public
class
Person
{
private
String
name
=
"";
private
String
=
"";
private
int
age;
//省略
set,get方法
}
//
再創(chuàng)建一個(gè)Test類,其中在main方法中代碼如下:
import
java.lang.reflect.InvocationTargetException;
import
java.util.HashMap;
import
java.util.Map;
import
mons.beanutils.BeanUtils;
import
mons.beanutils.ConvertUtils;
public
class
Test
{
/**
*
@param
args
*/
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();
}
}
}
//
原理也是通過(guò)Java的反射機(jī)制來(lái)做的。
//
2、
將一個(gè)Map對(duì)象轉(zhuǎn)化為一個(gè)Bean
//
這個(gè)Map對(duì)象的key必須與Bean的屬性相對(duì)應(yīng)。
Map
map
=
new
HashMap();
map.put("name","tom");
map.put("email","tom@");
map.put("age","21");
//將map轉(zhuǎn)化為一個(gè)Person對(duì)象
Person
person
=
new
Person();
BeanUtils.populate(person,map);
//
通過(guò)上面的一行代碼,此時(shí)person的屬性就已經(jīng)具有了上面所賦的值了。
//
將一個(gè)Bean轉(zhuǎn)化為一個(gè)Map對(duì)象了,如下:
Map
map
=
BeanUtils.describe(person)
2、Betwixt
XML與Java對(duì)象之間相互轉(zhuǎn)換。[java]
\o"viewplain"viewplain\o"copy"copy//1、
將JavaBean轉(zhuǎn)為XML內(nèi)容
//
新創(chuàng)建一個(gè)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)
{
=
name;
this.age
=
age;
}
//省略set,
get方法
public
String
toString()
{
return
"PersonBean[name='"
+
name
+
"',age='"
+
age
+
"']";
}
}
//再創(chuàng)建一個(gè)WriteApp類:
import
java.io.StringWriter;
import
mons.betwixt.io.BeanWriter;
public
class
WriteApp
{
/**
*
創(chuàng)建一個(gè)例子Bean,并將它轉(zhuǎn)化為XML.
*/
public
static
final
void
main(String
[]
args)
throws
Exception
{
//
先創(chuàng)建一個(gè)StringWriter,我們將把它寫入為一個(gè)字符串
StringWriter
outputWriter
=
new
StringWriter();
//
Betwixt在這里僅僅是將Bean寫入為一個(gè)片斷
//
所以如果要想完整的XML內(nèi)容,我們應(yīng)該寫入頭格式
outputWriter.write(“<?xml
version=’1.0′
encoding=’UTF-8′
?>\n”);
//
創(chuàng)建一個(gè)BeanWriter,其將寫入到我們預(yù)備的stream中
BeanWriter
beanWriter
=
new
BeanWriter(outputWriter);
//
配置betwixt
//
更多詳情請(qǐng)參考java
docs
或最新的文檔
beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
beanWriter.getBindingConfiguration().setMapIDs(false);
beanWriter.enablePrettyPrint();
//
如果這個(gè)地方不傳入XML的根節(jié)點(diǎn)名,Betwixt將自己猜測(cè)是什么
//
但是讓我們將例子Bean名作為根節(jié)點(diǎn)吧
beanWriter.write(“person”,
new
PersonBean(“John
Smith”,
21));
//輸出結(jié)果
System.out.println(outputWriter.toString());
//
Betwixt寫的是片斷而不是一個(gè)文檔,所以不要自動(dòng)的關(guān)閉掉writers或者streams,
//但這里僅僅是一個(gè)例子,不會(huì)做更多事情,所以可以關(guān)掉
outputWriter.close();
}
}
//2、
將XML轉(zhuǎn)化為JavaBean
import
java.io.StringReader;
import
mons.betwixt.io.BeanReader;
public
class
ReadApp
{
public
static
final
void
main(String
args[])
throws
Exception{
//
先創(chuàng)建一個(gè)XML,由于這里僅是作為例子,所以我們硬編碼了一段XML內(nèi)容
StringReader
xmlReader
=
new
StringReader(
"<?xml
version=’1.0′
encoding=’UTF-8′
?>
<person><age>25</age><name>James
Smith</name></person>");
//創(chuàng)建BeanReader
BeanReader
beanReader
=
new
BeanReader();
//配置reader
beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
beanReader.getBindingConfiguration().setMapIDs(false);
//注冊(cè)beans,以便betwixt知道XML將要被轉(zhuǎn)化為一個(gè)什么Bean
beanReader.registerBeanClass("person",
PersonBean.class);
//現(xiàn)在我們對(duì)XML進(jìn)行解析
PersonBean
person
=
(PersonBean)
beanReader.parse(xmlReader);
//輸出結(jié)果
System.out.println(person);
}
}
3、Codec
提供了一些公共的編解碼實(shí)現(xiàn),比如Base64,Hex,MD5,PhoneticandURLs等等。[java]
\o"viewplain"viewplain\o"copy"copy//Base64編解碼
private
static
String
encodeTest(String
str){
Base64
base64
=
new
Base64();
try
{
str
=
base64.encodeToString(str.getBytes("UTF-8"));
}
catch
(UnsupportedEncodingException
e)
{
e.printStackTrace();
}
System.out.println("Base64
編碼后:"+str);
return
str;
}
private
static
void
decodeTest(String
str){
Base64
base64
=
new
Base64();
//str
=
Arrays.toString(Base64.decodeBase64(str));
str
=
new
String(Base64.decodeBase64(str));
System.out.println("Base64
解碼后:"+str);
}
4、Collections
對(duì)java.util的擴(kuò)展封裝,處理數(shù)據(jù)還是挺靈活的。mons.collections–CommonsCollections自定義的一組公用的接口和工具類mons.collections.bag–
實(shí)現(xiàn)Bag接口的一組類mons.collections.bidimap–
實(shí)現(xiàn)BidiMap系列接口的一組類mons.collections.buffer–
實(shí)現(xiàn)Buffer接口的一組類mons.collections.collection–
實(shí)現(xiàn)java.util.Collection接口的一組類parators–
實(shí)現(xiàn)java.util.Comparator接口的一組類mons.collections.functors–CommonsCollections自定義的一組功能類mons.collections.iterators–
實(shí)現(xiàn)java.util.Iterator接口的一組類mons.collections.keyvalue–
實(shí)現(xiàn)集合和鍵/值映射相關(guān)的一組類mons.collections.list–
實(shí)現(xiàn)java.util.List接口的一組類mons.collections.map–
實(shí)現(xiàn)Map系列接口的一組類mons.collections.set–
實(shí)現(xiàn)Set系列接口的一組類[java]
\o"viewplain"viewplain\o"copy"copy/**
*
得到集合里按順序存放的key之后的某一Key
*/
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"
/**
*
通過(guò)key得到value
*
通過(guò)value得到key
*
將map里的key和value對(duì)調(diào)
*/
BidiMap
bidi
=
new
TreeBidiMap();
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);
/**
*
得到兩個(gè)集合中相同的元素
*/
List<String>
list1
=
new
ArrayList<String>();
list1.add("1");
list1.add("2");
list1.add("3");
List<String>
list2
=
new
ArrayList<String>();
list2.add("2");
list2.add("3");
list2.add("5");
Collection
c
=
CollectionUtils.retainAll(list1,
list2);
System.out.println(c);
5、Compress
commonscompress中的打包、壓縮類庫(kù)。
[java]
\o"viewplain"viewplain\o"copy"copy//創(chuàng)建壓縮對(duì)象
ZipArchiveEntry
entry
=
new
ZipArchiveEntry("CompressTest");
//要壓縮的文件
File
f=new
File("e:\\test.pdf");
FileInputStream
fis=new
FileInputStream(f);
//輸出的對(duì)象
壓縮的文件
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、Configuration
用來(lái)幫助處理配置文件的,支持很多種存儲(chǔ)方式。
1.Propertiesfiles
2.XMLdocuments
3.Propertylistfiles(.plist)
4.JNDI
5.JDBCDatasource
6.Systemproperties
7.Appletparameters
8.Servletparameters[java]
\o"viewplain"viewplain\o"copy"copy//舉一個(gè)Properties的簡(jiǎn)單例子
#
perties
colors.background
=
#FFFFFF
colors.foreground
=
#000080
window.width
=
500
window.height
=
300
PropertiesConfiguration
config
=
new
PropertiesConfiguration("perties");
config.setProperty("colors.background",
"#000000);
config.save();
config.save("perties);//save
a
copy
Integer
integer
=
config.getInteger("window.width");
7、DBCP
(DatabaseConnectionPool)是一個(gè)依賴Jakartacommons-pool對(duì)象池機(jī)制的數(shù)據(jù)庫(kù)連接池,Tomcat的數(shù)據(jù)源使用的就是DBCP。[java]
\o"viewplain"viewplain\o"copy"copyimport
javax.sql.DataSource;
import
java.sql.Connection;
import
java.sql.Statement;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import
mons.pool.ObjectPool;
import
mons.pool.impl.GenericObjectPool;
import
mons.dbcp.ConnectionFactory;
import
mons.dbcp.PoolingDataSource;
import
mons.dbcp.PoolableConnectionFactory;
import
mons.dbcp.DriverManagerConnectionFactory;
//官方示例
public
class
PoolingDataSources
{
public
static
void
main(String[]
args)
{
System.out.println("加載jdbc驅(qū)動(dòng)");
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch
(ClassNotFoundException
e)
{
e.printStackTrace();
}
System.out.println("Done.");
//
System.out.println("設(shè)置數(shù)據(jù)源");
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
static
DataSource
setupDataSource(String
connectURI)
{
//設(shè)置連接地址
ConnectionFactory
connectionFactory
=
new
DriverManagerConnectionFactory(
connectURI,
null);
//
創(chuàng)建連接工廠
PoolableConnectionFactory
poolableConnectionFactory
=
new
PoolableConnectionFactory(
connectionFactory);
//獲取GenericObjectPool
連接的實(shí)例
ObjectPool
connectionPool
=
new
GenericObjectPool(
poolableConnectionFactory);
//
創(chuàng)建
PoolingDriver
PoolingDataSource
dataSource
=
new
PoolingDataSource(connectionPool);
return
dataSource;
}
}
8、DbUtils
Apache組織提供的一個(gè)資源JDBC工具類庫(kù),它是對(duì)JDBC的簡(jiǎn)單封裝,對(duì)傳統(tǒng)操作數(shù)據(jù)庫(kù)的類進(jìn)行二次封裝,可以把結(jié)果集轉(zhuǎn)化成List。,同時(shí)也不影響程序的性能。DbUtils類:?jiǎn)?dòng)類
ResultSetHandler接口:轉(zhuǎn)換類型接口
MapListHandler類:實(shí)現(xiàn)類,把記錄轉(zhuǎn)化成List
BeanListHandler類:實(shí)現(xiàn)類,把記錄轉(zhuǎn)化成List,使記錄為JavaBean類型的對(duì)象
QreryRunner類:執(zhí)行SQL語(yǔ)句的類[java]
\o"viewplain"viewplain\o"copy"copyimport
mons.dbutils.DbUtils;
import
mons.dbutils.QueryRunner;
import
mons.dbutils.handlers.BeanListHandler;
import
java.sql.Connection;
import
java.sql.DriverManager;
import
java.sql.SQLException;
import
java.util.List;
//轉(zhuǎn)換成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";
DbUtils.loadDriver(jdbcDriver);
try
{
conn
=
DriverManager.getConnection(url,
user,
password);
QueryRunner
qr
=
new
QueryRunner();
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("id:"
+
p.getId()
+
",name:"
+
p.getName());
}
}
catch
(SQLException
e)
{
e.printStackTrace();
}
finally
{
DbUtils.closeQuietly(conn);
}
}
}
public
class
Person{
private
Integer
id;
private
String
name;
//省略set,
get方法
}
import
mons.dbutils.DbUtils;
import
mons.dbutils.QueryRunner;
import
mons.dbutils.handlers.MapListHandler;
import
java.sql.Connection;
import
java.sql.DriverManager;
import
java.sql.SQLException;
import
java.util.List;
import
java.util.Map;
//轉(zhuǎn)換成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";
DbUtils.loadDriver(jdbcDriver);
try
{
conn
=
DriverManager.getConnection(url,
user,
password);
QueryRunner
qr
=
new
QueryRunner();
List
results
=
(List)
qr.query(conn,
"select
id,name
from
person",
new
MapListHandler());
for
(int
i
=
0;
i
<
results.size();
i++)
{
Map
map
=
(Map)
results.get(i);
System.out.println("id:"
+
map.get("id")
+
",name:"
+
map.get("name"));
}
}
catch
(SQLException
e)
{
e.printStackTrace();
}
finally
{
DbUtils.closeQuietly(conn);
}
}
}
9、Email
提供的一個(gè)開源的API,是對(duì)javamail的封裝。[java]
\o"viewplain"viewplain\o"copy"copy//用commons
email發(fā)送郵件
public
static
void
main(String
args[]){
=
new
SimpleEmail();
email.setHostName("");
email.setSmtpPort(465);
email.setAuthenticator(new
DefaultAuthenticator("username",
"password"));
email.setSSLOnConnect(true);
email.setFrom("user@");
email.setSubject("TestMail");
email.setMsg("This
is
a
test
...
:-)");
email.addTo("foo@");
email.send();
}
10、FileUpload
javaweb文件上傳功能。[java]
\o"viewplain"viewplain\o"copy"copy//官方示例:
//*
檢查請(qǐng)求是否含有上傳文件
//
Check
that
we
have
a
file
upload
request
boolean
isMultipart
=
ServletFileUpload.isMultipartContent(request);
//現(xiàn)在我們得到了items的列表
//如果你的應(yīng)用近于最簡(jiǎn)單的情況,上面的處理就夠了。但我們有時(shí)候還是需要更多的控制。
//下面提供了幾種控制選擇:
//
Create
a
factory
for
disk-based
file
items
DiskFileItemFactory
factory
=
new
DiskFileItemFactory();
//
Set
factory
constraints
factory.setSizeThreshold(yourMaxMemorySize);
factory.setRepository(yourTempDirectory);
//
Create
a
new
file
upload
handler
ServletFileUpload
upload
=
new
ServletFileUpload(factory);
//
設(shè)置最大上傳大小
upload.setSizeMax(yourMaxRequestSize);
//
解析所有請(qǐng)求
List
/*
FileItem
*/
items
=
upload.parseRequest(request);
//
Create
a
factory
for
disk-based
file
items
DiskFileItemFactory
factory
=
new
DiskFileItemFactory(
yourMaxMemorySize,
yourTempDirectory);
//一旦解析完成,你需要進(jìn)一步處理item的列表。
//
Process
the
uploaded
items
Iterator
iter
=
items.iterator();
while
(iter.hasNext())
{
FileItem
item
=
(FileItem)
iter.next();
if
(item.isFormField())
{
processFormField(item);
}
else
{
processUploadedFile(item);
}
}
//區(qū)分?jǐn)?shù)據(jù)是否為簡(jiǎn)單的表單數(shù)據(jù),如果是簡(jiǎn)單的數(shù)據(jù):
//
processFormField
if
(item.isFormField())
{
String
name
=
item.getFieldName();
String
value
=
item.getString();
//...省略步驟
}
//如果是提交的文件:
//
processUploadedFile
if
(!item.isFormField())
{
String
fieldName
=
item.getFieldName();
String
fileName
=
item.getName();
String
contentType
=
item.getContentType();
boolean
isInMemory
=
item.isInMemory();
long
sizeInBytes
=
item.getSize();
//...省略步驟
}
//對(duì)于這些item,我們通常要把它們寫入文件,或轉(zhuǎn)為一個(gè)流
//
Process
a
file
upload
if
(writeToFile)
{
File
uploadedFile
=
new
File(...);
item.write(uploadedFile);
}
else
{
InputStream
uploadedStream
=
item.getInputStream();
//...省略步驟
uploadedStream.close();
}
//或轉(zhuǎn)為字節(jié)數(shù)組保存在內(nèi)存中:
//
Process
a
file
upload
in
memory
byte[]
data
=
item.get();
//...省略步驟
//如果這個(gè)文件真的很大,你可能會(huì)希望向用戶報(bào)告到底傳了多少到服務(wù)端,讓用戶了解上傳的過(guò)程
//Create
a
progress
listener
ProgressListener
progressListener
=
new
ProgressListener(){
public
void
update(long
pBytesRead,
long
pContentLength,
int
pItems)
{
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、HttpClient
基于HttpCore實(shí)現(xiàn)的一個(gè)HTTP/1.1兼容的HTTP客戶端,它提供了一系列可重用的客戶端身份驗(yàn)證、HTTP狀態(tài)保持、HTTP連接管理module。[java]
\o"viewplain"viewplain\o"copy"copy//GET方法
import
java.io.IOException;
import
mons.httpclient.*;
import
mons.httpclient.methods.GetMethod;
import
mons.httpclient.params.HttpMethodParams;
public
class
GetSample{
public
static
void
main(String[]
args)
{
//
構(gòu)造HttpClient的實(shí)例
HttpClient
httpClient
=
new
HttpClient();
//
創(chuàng)建GET方法的實(shí)例
GetMethod
getMethod
=
new
GetMethod("");
//
使用系統(tǒng)提供的默認(rèn)的恢復(fù)策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new
DefaultHttpMethodRetryHandler());
try
{
//
執(zhí)行g(shù)etMethod
int
statusCode
=
httpClient.executeMethod(getMethod);
if
(statusCode
!=
HttpStatus.SC_OK)
{
System.err.println("Method
failed:
"
+
getMethod.getStatusLine());
}
//
讀取內(nèi)容
byte[]
responseBody
=
getMethod.getResponseBody();
//
處理內(nèi)容
System.out.println(new
String(responseBody));
}
catch
(HttpException
e)
{
//
發(fā)生致命的異常,可能是協(xié)議不對(duì)或者返回的內(nèi)容有問題
System.out.println("Please
check
your
provided
http
address!");
e.printStackTrace();
}
catch
(IOException
e)
{
//
發(fā)生網(wǎng)絡(luò)異常
e.printStackTrace();
}
finally
{
//
釋放連接
getMethod.releaseConnection();
}
}
}
//POST方法
import
java.io.IOException;
import
mons.httpclient.*;
import
mons.httpclient.methods.PostMethod;
import
mons.httpclient.params.HttpMethodParams;
public
class
PostSample{
public
static
void
main(String[]
args)
{
//
構(gòu)造HttpClient的實(shí)例
HttpClient
httpClient
=
new
HttpClient();
//
創(chuàng)建POST方法的實(shí)例
String
url
=
"/";
PostMethod
postMethod
=
new
PostMethod(url);
//
填入各個(gè)表單域的值
NameValuePair[]
data
=
{
new
NameValuePair("id",
"youUserName"),
new
NameValuePair("passwd",
"yourPwd")
};
//
將表單的值放入postMethod中
postMethod.setRequestBody(data);
//
執(zhí)行postMethod
int
statusCode
=
httpClient.executeMethod(postMethod);
//
HttpClient對(duì)于要求接受后繼服務(wù)的請(qǐng)求,象POST和PUT等不能自動(dòng)處理轉(zhuǎn)發(fā)
//
301或者302
if
(statusCode
==
HttpStatus.SC_MOVED_PERMANENTLY
||
statusCode
==
HttpStatus.SC_MOVED_TEMPORARILY)
{
//
從頭中取出轉(zhuǎn)向的地址
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
對(duì)java.io的擴(kuò)展操作文件非常方便。[java]
\o"viewplain"viewplain\o"copy"copy//1.讀取Stream
//標(biāo)準(zhǔn)代碼:
InputStream
in
=
new
URL(
""
).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(
""
).openStream();
try
{
System.out.println(
IOUtils.toString(
in
)
);
}
finally
{
IOUtils.closeQuietly(in);
}
//2.讀取文件
File
file
=
new
File("/commons/io/perties");
List
lines
=
FileUtils.readLines(file,
"UTF-8");
//3.察看剩余空間
long
freeSpace
=
FileSystemUtils.freeSpace("C:/");
13、Lang
主要是一些公共的工具集合,比如對(duì)字符、數(shù)組的操作等等。[java]
\o"viewplain"viewplain\o"copy"copy//
1
合并兩個(gè)數(shù)組:
mons.lang.
ArrayUtils
//
有時(shí)我們需要將兩個(gè)數(shù)組合并為一個(gè)數(shù)組,用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());
}
//2
截取從from開始字符串
StringUtils.substringAfter("SELECT
*
FROM
PERSON
",
"from");
//3
判斷該字符串是不是為數(shù)字(0~9)組成,如果是,返回true
但該方法不識(shí)別有小數(shù)點(diǎn)和
請(qǐng)注意。
StringUtils.isNumeric("454534");
//返回true
//4.取得類名
System.out.println(ClassUtils.getShortClassName(Test.class));
//取得其包名
System.out.println(ClassUtils.getPackageName(Test.class));
//5.NumberUtils
System.out.println(NumberUtils.stringToInt("6"));
//6.五位的隨機(jī)字母和數(shù)字
System.out.println(RandomStringUtils.randomAlphanumeric(5));
//7.StringEscapeUtils
System.out.println(StringEscapeUtils.escapeHtml("<html>"));
//輸出結(jié)果為<html>
System.out.println(StringEscapeUtils.escapeJava("String"));
//8.StringUtils,判斷是否是空格字符
System.out.println(StringUtils.isBlank("
"));
//將數(shù)組中的內(nèi)容以,分隔
System.out.println(StringUtils.join(test,","));
//在右邊加下字符,使之總長(zhǎng)度為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
"));
//判斷是否包含這個(gè)字符
System.out.println(
StringUtils.contains("abc",
"ba"));
//表示左邊兩個(gè)字符
System.out.println(
StringUtils.left("abc",
2));
System.out.println(NumberUtils.stringToInt("33"));
14、Logging
提供的是一個(gè)Java的日志接口,同時(shí)兼顧輕量級(jí)和不依賴于具體的日志實(shí)現(xiàn)工具。[java]
\o"viewplain"viewplain\o"copy"copyimport
mons.logging.Log;
import
mons.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");
("INF
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工現(xiàn)場(chǎng)閘機(jī)設(shè)置標(biāo)準(zhǔn)
- 施工現(xiàn)場(chǎng)施工防高空墜物制度
- 閱讀啟迪心靈小學(xué)生的成長(zhǎng)之路
- 母嬰用品銷售中的用戶體驗(yàn)優(yōu)化策略匯報(bào)
- 清明節(jié)掃墓應(yīng)急預(yù)案
- 預(yù)防為主早期小兒肺炎識(shí)別與護(hù)理措施
- DB4415T 55-2025香芋南瓜-紫云英-香芋南瓜輪作生產(chǎn)技術(shù)規(guī)程
- 交通監(jiān)控項(xiàng)目工程合同
- 上海市大數(shù)據(jù)中心計(jì)算機(jī)信息系統(tǒng)集成合同
- 個(gè)人小額信貸合同范本
- 渠道管理就這樣做
- 大客戶銷售這樣說(shuō)這樣做
- 精裝修樣板房房屋使用說(shuō)明
- 喬遷新居結(jié)婚典禮主持詞
- 小學(xué)四年級(jí)數(shù)學(xué)競(jìng)賽試題(附答案)
- 魯科版高中化學(xué)必修2全冊(cè)教案
- 《病理學(xué)基礎(chǔ)》知識(shí)考核試題題庫(kù)與答案
- 人口分布 高一地理下學(xué)期人教版 必修第二冊(cè)
- 部編版六年級(jí)下冊(cè)語(yǔ)文第3單元習(xí)作例文+習(xí)作PPT
- 四年級(jí)上冊(cè)英語(yǔ)試題-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宮內(nèi)膜異位癥診療指南
評(píng)論
0/150
提交評(píng)論