锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.util.Map;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.ClassUtils;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
/**
* commons-lang-2.4.jar 鍖呭父鐢ㄦ柟娉曢泦閿?br />
*
*/
public class CommonsLang {
public static void main(String[] args) {
String[] test = {"33", "ddffd"};
String[] test1 = {"ddffd", "33"};
// 1.鍒ゆ柇涓や釜鏁版嵁鏄惁鐩哥瓑
System.out.println(ArrayUtils.isEquals(test, test1));
// 2.{33,ddffd} 灝嗘暟緇勫唴瀹逛互{,}褰㈠紡杈撳嚭錛?br />
System.out.println(ArrayUtils.toString(test));
Map map = ArrayUtils.toMap(new String[][] { { "RED", "#FF0000" }, { "GREEN", "#00FF00" }, { "BLUE", "#0000FF" } });
// 3.toMap 涓涓暟緇勶紝浣嗘瘡涓厓绱?Each element of the array
// must be either a {@link java.util.Map.Entry} or an Array,
// 鏂瑰紡涓 涓嬮潰鏄亶鍘唌ap鐨勬柟寮忥紝鍙栧緱鍏秌eySet.iterator();
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
// it.next()鍙寘鍚玨ey
System.out.println("key:" + key + "value:" + map.get(key));
}
// 鏂瑰紡浜?鍙栧緱鍏秂ntrySet()闆嗗悎,
Iterator it1 = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it1.next();
// it1.next()涓寘鍚玨ey鍜寁alue
System.out.println("key :" + entry.getKey() + "value :" + entry.getValue());
}
// 4.鍙栧緱綾誨悕
System.out.println(ClassUtils.getShortClassName(Test.class));
// 鍙栧緱鍏跺寘鍚?br />
System.out.println(ClassUtils.getPackageName(Test.class));
// 5.NumberUtils
System.out.println(NumberUtils.stringToInt("6"));
System.out.println(NumberUtils.stringToInt("7", 10));
// 6.浜斾綅鐨勯殢鏈哄瓧姣嶅拰鏁板瓧
System.out.println(RandomStringUtils.randomAlphanumeric(5));
// 7.StringEscapeUtils
System.out.println(StringEscapeUtils.escapeHtml("<html>"));
// 杈撳嚭緇撴灉涓?amp;lt;html>
System.out.println(StringEscapeUtils.escapeJava("String"));
// 8.StringUtils,鍒ゆ柇鏄惁鏄┖鏍煎瓧絎?br />
System.out.println(StringUtils.isBlank(" "));
// 灝嗘暟緇勪腑鐨勫唴瀹逛互,鍒嗛殧
System.out.println(StringUtils.join(test, ","));
// 鍦ㄥ彸杈瑰姞涓嬪瓧絎?浣夸箣鎬婚暱搴︿負6
System.out.println(StringUtils.rightPad("abc", 6, 'T'));
// 棣栧瓧姣嶅ぇ鍐?br />
System.out.println(StringUtils.capitalize("abc"));
// Deletes all whitespaces from a String 鍒犻櫎鎵鏈夌┖鏍?br />
System.out.println(StringUtils.deleteWhitespace(" ab c "));
// 鍒ゆ柇鏄惁鍖呭惈榪欎釜瀛楃
System.out.println(StringUtils.contains("abc", "ba"));
// 琛ㄧず宸﹁竟涓や釜瀛楃
System.out.println(StringUtils.left("abc", 2));
System.out.println(StringUtils.right("abcd", 3));
}
}
铏界劧鐢╰elnet榪欐牱鐨勭▼搴忛兘鍙妸欏甸潰鍙栧洖鏉ワ紝浣嗘槸鍦ㄤ笌web鏈嶅姟鍣ㄧ殑浜や簰涓紝濡傛灉娑夊強cookie鎴杊ttps鎴杝sl絳夊唴瀹癸紝涓鑸姛鑳界浉瀵瑰畬澶囩殑http瀹㈡埛绔繕鏄潪甯稿繀瑕佺殑銆侷E鎴朜etScape絳夋祻瑙堝櫒紜疄涓嶉敊錛屽彲鏄鏋滀負瀹炵幇鎸佺畫浜掑姩鑰屽湪紼嬪簭璋冪敤嫻忚鍣紝鎴戜釜浜鴻涓哄叾涓殑宸ヤ綔閲忚繕鏄笉灝忕殑錛岃繖榪樻病鑰冭檻鐗堟潈闂銆傛渶濂界殑鍔炴硶錛屽氨鏄兘鏈変竴涓紑婧愮殑鍖咃紝鑳藉疄鐜癶ttp瀹㈡埛绔殑鍔熻兘錛屼緵鎴戜滑寮鍙戠殑紼嬪簭璋冪敤銆?a >httpclient灝辨槸榪欎箞涓涓寘錛屾垜鐩鎬俊鍙兘鏈夋瘮瀹冪殑瀹炵幇鏇村ソ鐨勶紝浣嗙洰鍓嶆垜鍙叧娉ㄨ繖涓傦細錛?br />
銆銆涓嬮潰鏄痭ogoop鍋氱殑鍔熻兘姣旇緝琛細
Features | nogoop | Sun JRE < 1.4.2 | Sun JRE 1.4.2 | Innovation | Apache/Jakarta |
cookies | X | X | |||
plug compatible | X | X | X | X | [partial] |
true request output stream | X | X | |||
true response input stream | X | X | X | ||
connection keep alive | X | X | X | X | X |
connection pool throttling | X | X | |||
connection/request timeout | X | X [uns] | X | X | |
idle connection timeout | X | X | |||
pipelining of requests | X | ||||
alternate DNS resolution (dnsjava) | X | ||||
SSL | X | X | X | X | X |
basic authentication | X | X | X | X | X |
digest authentication | X | X | X | X | X |
NTLM authentication | X | [Windows only] | X | ||
proxy authentication | X | X | X | X | X |
minimum JRE version | 1.2 | 1 | 01騫?鏈?鏃?/td> | 1.2 | 1.2 |
price | $499 | free | free | free | free |
source available | X | X | X | ||
diagnostic tracing | X | X | X | ||
actively supported | X | X | X | X | |
fix turnaround | fast | slow | slow | none | medium |
license | purchase | Sun JRE | Sun JRE | LGPL | Apache |
銆銆瀵筳re1.3.*錛屽鏋滆HttpClient鏀寔https錛屽垯闇瑕佷笅杞藉茍瀹夎jsse鍜?a >jce.瀹夎鐨勬楠ゅ涓嬶細
1)涓嬭澆jsse鍜宩ce.
2)媯鏌LASSPATH涓病鏈変笌jsse鍜宩ce鐩稿叧鐨刯ar鍖?br />
3)灝?US_export_policy.jar銆乴ocal_policy.jar銆乯sse.jar銆乯net.jar銆乯ce1_2_x.jar銆乻unjce_provider.jar銆乯cert.jar澶嶅埗鍒扮洰褰曪細
UNIX:$JDK_HOME/jre/lib/ext
Windows:%JDK_HOME%\jre\lib\ext
4)淇敼涓嬭堪鐩綍涓嬬殑java.security鏂囦歡銆?br />
UNIX:$JDK_HOME/jre/lib/security/
Windows:%JDK_HOME%\jre\lib\security\
5)
銆銆HttpClient榪樿姹傚畨瑁卌ommons-logging錛屼笅闈㈣窡httpclient涓鍧楀畨瑁呫?/p>
銆銆緙栬瘧錛?/p>
銆銆鍦ㄦ墽琛屾柟娉曠殑榪囩▼涓紝鏈変袱縐嶅紓甯革紝涓縐嶆槸HttpRecoverableException錛岃〃紺哄伓鐒舵ч敊璇彂鐢燂紝涓鑸啀璇曞彲鑳芥垚鍔燂紝鍙︿竴縐嶆槸IOException錛屼弗閲嶉敊璇?br />
銆銆榪欏効鏈夎繖涓暀紼嬩腑鐨勪竴涓緥紼嬶紝鍙互涓嬭澆銆?/p>
銆銆HttpClient涓夌涓嶅悓鐨勮璇佹柟妗? Basic, Digest and NTLM. 榪欎簺鏂規鍙敤浜庢湇鍔″櫒鎴栦唬鐞嗗瀹㈡埛绔殑璁よ瘉錛岀畝縐版湇鍔″櫒璁よ瘉鎴栦唬鐞嗚璇併?br />
1)鏈嶅姟鍣ㄨ璇?Server Authentication)
銆銆HttpClient澶勭悊鏈嶅姟鍣ㄨ璇佸嚑涔庢槸閫忔槑鐨勶紝浠呴渶瑕佸紑鍙戜漢鍛樻彁渚涚櫥褰曚俊鎭?login credentials)銆傜櫥褰曚俊鎭繚瀛樺湪HttpState綾葷殑瀹炰緥涓紝鍙互閫氳繃 setCredentials(String realm, Credentials cred)鍜実etCredentials(String realm)鏉ヨ幏鍙栨垨璁劇疆銆傛敞鎰忥紝璁懼畾瀵歸潪鐗瑰畾绔欑偣璁塊棶鎵闇瑕佺殑鐧誨綍淇℃伅錛屽皢realm鍙傛暟緗負null. HttpClient鍐呭緩鐨勮嚜鍔ㄨ璇侊紝鍙互閫氳繃HttpMethod綾葷殑setDoAuthentication(boolean doAuthentication)鏂規硶鍏抽棴錛岃屼笖榪欐鍏抽棴鍙獎鍝岺ttpMethod褰撳墠鐨勫疄渚嬨?br />
銆銆鎶㈠厛璁よ瘉(Preemptive Authentication)鍙互閫氳繃涓嬭堪鏂規硶鎵撳紑.
銆銆鍦ㄨ繖縐嶆ā寮忔椂錛孒ttpClient浼氫富鍔ㄥ皢basic璁よ瘉搴旂瓟淇℃伅浼犵粰鏈嶅姟鍣紝鍗充嬌鍦ㄦ煇縐嶆儏鍐典笅鏈嶅姟鍣ㄥ彲鑳借繑鍥炶璇佸け璐ョ殑搴旂瓟錛岃繖鏍峰仛涓昏鏄負浜嗗噺灝戣繛鎺ョ殑寤虹珛銆備負浣挎瘡涓柊寤虹殑 HttpState瀹炰緥閮藉疄琛屾姠鍏堣璇侊紝鍙互濡備笅璁劇疆緋葷粺灞炴с?/p>
Httpclient瀹炵幇鐨勬姠鍏堣璇侀伒寰猺fc2617.
2)浠g悊璁よ瘉(proxy authentication)
銆銆闄や簡鐧誨綍淇℃伅闇鍗曠嫭瀛樻斁浠ュ錛屼唬鐞嗚璇佷笌鏈嶅姟鍣ㄨ璇佸嚑涔庝竴鑷淬傜敤 setProxyCredentials(String realm, Credentials cred)鍜?getProxyCredentials(String realm)璁俱佸彇鐧誨綍淇℃伅銆?br />
3)璁よ瘉鏂規(authentication schemes)
銆銆Basic
銆銆鏄疕TTP涓瀹氭渶鏃╃殑涔熸槸鏈鍏煎(?)鐨勬柟妗堬紝閬楁喚鐨勬槸涔熸槸鏈涓嶅畨鍏ㄧ殑涓涓柟妗堬紝鍥犱負瀹冧互鏄庣爜浼犻佺敤鎴峰悕鍜屽瘑鐮併傚畠瑕佹眰涓涓猆sernamePasswordCredentials瀹炰緥錛屽彲浠ユ寚瀹氭湇鍔″櫒绔殑璁塊棶絀洪棿鎴栭噰鐢ㄩ粯璁ょ殑鐧誨綍淇℃伅銆?br />
銆銆Digest
銆銆鏄湪HTTP1.1涓鍔犵殑涓涓柟妗堬紝铏界劧涓嶅Basic寰楀埌鐨勮蔣浠舵敮鎸佸錛屼絾榪樻槸鏈夊箍娉涚殑浣跨敤銆侱igest鏂規姣擝asic鏂規瀹夊叏寰楀錛屽洜瀹冩牴鏈氨涓嶉氳繃緗戠粶浼犻佸疄闄呯殑瀵嗙爜錛屼紶閫佺殑鏄埄鐢ㄨ繖涓瘑鐮佸浠庢湇鍔″櫒浼犳潵鐨勪竴涓殢鏈烘暟(nonce)鐨勫姞瀵嗕覆銆傚畠瑕佹眰涓涓猆sernamePasswordCredentials瀹炰緥錛屽彲浠ユ寚瀹氭湇鍔″櫒绔殑璁塊棶絀洪棿鎴栭噰鐢ㄩ粯璁ょ殑鐧誨綍淇℃伅銆?br />
銆銆NTLM
銆銆榪欐槸HttpClient鏀寔鐨勬渶澶嶆潅鐨勮璇佸崗璁傚畠M$璁捐鐨勪竴涓鏈夊崗璁紝娌℃湁鍏紑鐨勮鑼冭鏄庛備竴寮濮嬬敱浜庤璁$殑緙洪櫡錛孨TLM鐨勫畨鍏ㄦф瘮Digest宸紝鍚庢潵緇忚繃涓涓猄ervicePack琛ヤ竵鍚庯紝瀹夊叏鎬у垯姣旇緝Digest楂樸侼TLM闇瑕佷竴涓狽TCredentials瀹炰緥. 娉ㄦ剰錛岀敱浜嶯TLM涓嶄嬌鐢ㄨ闂┖闂?realms)鐨勬蹇碉紝HttpClient鍒╃敤鏈嶅姟鍣ㄧ殑鍩熷悕浣滆闂┖闂寸殑鍚嶅瓧銆傝繕闇瑕佹敞鎰忥紝鎻愪緵緇橬TCredentials鐨勭敤鎴峰悕錛屼笉瑕佺敤鍩熷悕鐨勫墠緙 - 濡? "adrian" 鏄紜殑錛岃?"DOMAIN\adrian" 鍒欐槸閿欑殑.
銆銆NTLM璁よ瘉鐨勫伐浣滄満鍒朵笌basic鍜宒igest鏈夊緢澶х殑宸埆銆傝繖浜涘樊鍒竴鑸敱HttpClient澶勭悊錛屼絾鐞嗚В榪欎簺宸埆鏈夊姪閬垮厤鍦ㄤ嬌鐢∟TLM璁よ瘉鏃跺嚭鐜伴敊璇?/p>
銆銆鐢變簬鎶鏈檺鍒訛紝浠ュ強涓轟繚璇?.0鍙戝竷鐗圓PI鐨勭ǔ瀹氾紝HttpClient榪樹笉鑳借嚜鍔ㄥ閲嶅畾鍚戯紝浣嗗閲嶅畾鍚戝埌鍚屼竴涓繪満銆佸悓涓绔彛涓旈噰鐢ㄥ悓涓鍗忚鐨勬儏鍐礖ttpClient鍙互鏀寔銆備笉鑳借嚜鍔ㄧ殑澶勭悊鐨勬儏鍐碉紝鍖呮嫭闇瑕佷漢宸ヤ氦浜掔殑鎯呭喌錛屾垨瓚呭嚭httpclient鐨勮兘鍔涖?br />
銆銆褰撴湇鍔″櫒閲嶅畾鍚戞寚浠ゆ寚鍒頒笉鍚岀殑涓繪満鏃訛紝HttpClient鍙槸綆鍗曞湴灝嗛噸瀹氬悜鐘舵佺爜浣滀負搴旂瓟鐘舵併傛墍鏈夌殑300鍒?99錛堝寘鍚袱绔級鐨勮繑鍥炵爜錛岄兘琛ㄧず鏄噸瀹氬悜搴旂瓟銆傚父瑙佺殑鏈夛細
銆銆褰撴敹鍒扮畝鍗曠殑閲嶅畾鍚戞椂錛岀▼搴忓簲浠嶩ttpMethod瀵硅薄涓娊鍙栨柊鐨刄RL騫跺皢鍏朵笅杞姐傚彟澶?闄愬埗涓涓嬮噸瀹氬悜嬈℃暟鏄釜濂界殑涓繪剰錛岃繖鍙互閬垮厤閫掑綊寰幆銆傛柊鐨刄RL鍙互浠庡ご瀛楁Location涓娊鍙栵紝濡備笅錛?/p>
鐗規畩閲嶅畾鍚戯細
銆銆涓涓狧TTP鍗忚鐨勮姹傛垨搴旂瓟鐨勫ご閮?鍦╤ttp鍗忚涓紝鏁版嵁鍖呭垎涓轟袱閮ㄥ垎錛屼竴閮ㄥ垎鏄ご閮紝鐢變竴浜涘悕鍊煎鏋勬垚錛屼竴閮ㄥ垎鏄富浣?body)錛屾槸鐪熸浼犲姙鐞嗙殑鏁版嵁錛堝HTML欏甸潰絳夛級錛夛紝蹇呴』浠S-ASCII緙栫爜錛岃繖鏄洜涓哄ご閮ㄤ笉浼犳暟鎹屽彧鎻忚堪琚浼犺緭鐨勬暟鎹殑涓浜涗俊鎭紝涓涓緥澶栨槸cookie錛屽畠鏄暟鎹絾鏄氳繃澶撮儴榪涜浼犺緭鐨勶紝鎵浠ュ畠涔熻鐢║S-ASCII緙栫爜銆?br />
銆銆HTTP鏁版嵁鍖呯殑涓諱綋閮ㄥ垎錛屽彲浠ョ敤浠諱綍涓縐嶆柟寮忚繘琛岀紪鐮侊紝榛樿鏄疘SO-8859-1錛屽叿浣撳彲浠ョ敤澶撮儴瀛楁Content-Type鎸囧畾銆傚彲浠ュ埄鐢?addRequestHeader鏂規硶錛岃瀹氱紪鐮佹柟寮忥紱鐢?getResponseCharSet鍙栧緱緙栫爜鏂瑰紡銆傚HTML鎴朮ML絳夌被鍨嬬殑鏂囨。錛屽畠浠殑鏈韓鐨凜ontent-Type涔熷彲浠ユ寚瀹氱紪鐮佹柟寮忥紝涓昏鍖哄垎涓よ呯殑浣滅敤鑼冨洿浠ュ緱鍒版紜疄鐨勮В鐮併?br />
銆銆URL鐨勭紪鐮佹爣鍑嗭紝鐢盧FC1738鎸囧畾涓猴紝鍙兘鏄敱鍙墦鍗?浣?瀛楄妭鐨剈s-ascii瀛楃緇勬垚錛?0-ff涓嶆槸us-ascii瀛楃錛岃?0-1F鏄帶鍒跺瓧絎︼紝榪欎袱涓尯鍩熶腑鐢ㄧ殑瀛楃閮介』鍔犱互緙栫爜(encoded)銆?br />
銆銆
銆銆 HttpClient鑳借嚜鍔ㄧ鐞哻ookie,鍖呮嫭鍏佽鏈嶅姟鍣ㄨ緗甤ookie騫跺湪闇瑕佺殑鏃跺欒嚜鍔ㄥ皢cookie榪斿洖鏈嶅姟鍣紝瀹冧篃鏀寔鎵嬪伐璁劇疆cookie鍚庡彂閫佸埌鏈嶅姟鍣ㄧ銆備笉騫哥殑鏄紝瀵瑰浣曞鐞哻ookie錛屾湁鍑犱釜瑙勮寖浜掔浉鍐茬獊錛歂etscape Cookie 鑽夋, RFC2109, RFC2965錛岃屼笖榪樻湁寰堝ぇ鏁伴噺鐨勮蔣浠跺晢鐨刢ookie瀹炵幇涓嶉伒寰換浣曡鑼? 涓轟簡澶勭悊榪欑鐘跺喌錛孒ttpClient鎻愪緵浜嗙瓥鐣ラ┍鍔ㄧ殑cookie綆$悊鏂瑰紡銆侶ttpClient鏀寔鐨刢ookie瑙勮寖鏈夛細
銆銆 RFC2965瑙勮寖鏆傛椂娌℃湁琚獺ttpClient鏀寔錛堝湪浠ュ悗鐨勭増鏈負浼氬姞涓婏級錛屽畠瀹氫箟浜哻ookie鐗堟湰2錛屽茍璇存槑浜嗙増鏈?cookie鐨勪笉瓚籌紝RFC2965鏈夋剰鏈変箙鍙栦唬rfc2109.
銆銆鍦℉ttpClient涓紝鏈変袱縐嶆柟娉曟潵鎸囧畾cookie瑙勮寖鐨勪嬌鐢紝
銆銆
銆銆鍊熷姪Java Secure Socket Extension (JSSE)錛孒ttpClient鍏ㄩ潰鏀寔Secure Sockets Layer (SSL)鎴朓ETF Transport Layer Security (TLS)鍗忚涓婄殑HTTP銆侸SSE宸茬粡jre1.4鍙婁互鍚庣殑鐗堟湰涓紝浠ュ墠鐨勭増鏈垯闇瑕佹墜宸ュ畨瑁呰緗紝鍏蜂綋榪囩▼鍙傝Sun緗戠珯鎴栨湰瀛︿範絎旇銆?br />
銆銆HttpClient涓嬌鐢⊿SL闈炲父綆鍗曪紝鍙傝冧笅闈袱涓緥瀛?
錛屽鏋滈氳繃闇瑕佹巿鏉冪殑浠g悊錛屽垯濡備笅錛?/p>
銆銆鍦℉ttpClient涓畾鍒禨SL鐨勬楠ゅ涓嬶細
銆銆宸茬煡鐨勯檺鍒跺拰闂
銆銆閬囧埌闂鐨勫鐞?br />
銆銆寰堝闂錛岀壒鍒槸鍦╦vm浣庝簬1.4鏃訛紝鏄敱jsse鐨勫畨瑁呴犳垚鐨勩?br />
銆銆涓嬮潰鐨勪唬鐮侊紝鍙綔涓烘渶緇堢殑媯嫻嬫墜孌點?/p>
1銆乭ttpclient鐨勫綰跨▼澶勭悊
銆銆浣跨敤澶氱嚎紼嬬殑涓昏鐩殑錛屾槸涓轟簡瀹炵幇騫惰鐨勪笅杞姐傚湪httpclient榪愯鐨勮繃紼嬩腑錛屾瘡涓猦ttp鍗忚鐨勬柟娉曪紝浣跨敤涓涓狧ttpConnection瀹炰緥銆傜敱浜庤繛鎺ユ槸涓縐嶆湁闄愮殑璧勬簮錛屾瘡涓繛鎺ュ湪鏌愪竴鏃跺埢鍙兘渚涗竴涓嚎紼嬪拰鏂規硶浣跨敤錛屾墍浠ラ渶瑕佺‘淇濆湪闇瑕佹椂姝g‘鍦板垎閰嶈繛鎺ャ侶ttpClient閲囩敤浜嗕竴縐嶇被浼糺dbc榪炴帴姹犵殑鏂規硶鏉ョ鐞嗚繛鎺ワ紝榪欎釜綆$悊宸ヤ綔鐢?MultiThreadedHttpConnectionManager瀹屾垚銆?/p>
姝ゆ槸錛宑lient鍙互鍦ㄥ涓嚎紼嬩腑琚敤鏉ユ墽琛屽涓柟娉曘傛瘡嬈¤皟鐢℉ttpClient.executeMethod() 鏂規硶錛岄兘浼氬幓閾炬帴綆$悊鍣ㄧ敵璇蜂竴涓繛鎺ュ疄渚嬶紝鐢寵鎴愬姛榪欎釜閾炬帴瀹炰緥琚鍑?checkout)錛岄殢涔嬪湪閾炬帴浣跨敤瀹屽悗蹇呴』褰掕繕綆$悊鍣ㄣ傜鐞嗗櫒鏀寔涓や釜璁劇疆錛?
maxConnectionsPerHost | 姣忎釜涓繪満鐨勬渶澶у茍琛岄摼鎺ユ暟錛岄粯璁や負2 |
maxTotalConnections | 瀹㈡埛绔誨茍琛岄摼鎺ユ渶澶ф暟錛岄粯璁や負20 |
瀵規瘡涓涓狧ttpClient.executeMethod欏繪湁涓涓猰ethod.releaseConnection()涓庝箣鍖歸厤.
銆銆HttpClient鏀寔鐨凥TTP鏂規硶鏈?縐嶏紝涓嬮潰鍒嗚堪涔嬨?br />
銆銆1銆丱ptions
銆銆HTTP鏂規硶Options鐢ㄦ潵鍚戞湇鍔″櫒鍙戦佽姹傦紝甯屾湜鑾峰緱閽堝鐢辮姹俇RL(request url)鏍囧織鐨勮祫婧愬湪璇鋒眰/搴旂瓟鐨勯氫俊榪囩▼鍙互浣跨敤鐨勫姛鑳介夐」銆傞氳繃榪欎釜鏂規硶錛屽鎴風鍙互鍦ㄩ噰鍙栧叿浣撹鍔ㄤ箣鍓嶏紝灝卞彲瀵規煇涓璧勬簮鍐沖畾閲囧彇浠涔堝姩浣滃拰/鎴栦互鍙婁竴浜涘繀瑕佹潯浠訛紝鎴栬呬簡瑙f湇鍔″櫒鎻愪緵鐨勫姛鑳姐傝繖涓柟娉曟渶鍏稿瀷鐨勫簲鐢紝灝辨槸鐢ㄦ潵鑾峰彇鏈嶅姟鍣ㄦ敮鎸佸摢浜汬TTP鏂規硶銆?br />
銆銆HttpClient涓湁涓涓被鍙玂ptionsMethod錛屾潵鏀寔榪欎釜HTTP鏂規硶錛屽埄鐢ㄨ繖涓被鐨刧etAllowedMethods鏂規硶錛屽氨鍙互寰堢畝鍗曞湴瀹炵幇涓婅堪鐨勫吀鍨嬪簲鐢ㄣ?/p>
銆銆2銆丟et
銆銆 HTTP鏂規硶GET鐢ㄦ潵鍙栧洖璇鋒眰URI錛坮equest-URI錛夋爣蹇楃殑浠諱綍淇℃伅錛堜互瀹炰綋(entity)鐨勫艦寮忥級錛?get"榪欎釜鍗曡瘝鏈剰灝辨槸”鑾峰彇“鐨勬剰鎬濄傚鏋滆姹俇RI鎸囧悜鐨勪竴涓暟鎹鐞嗚繃紼嬶紝閭h繖涓繃紼嬬敓鎴愮殑鏁版嵁錛屽湪搴旂瓟涓互瀹炰綋鐨勫艦寮忚榪斿洖錛岃屼笉鏄皢榪欎釜榪囩▼鐨勪唬鐮佺殑榪斿洖銆?br />
銆銆濡傛灉HTTP鍖呬腑鍚湁If-ModifiedSince, If-Unmodified-Since, If-Match, If-None-Match, 鎴?If-Range絳夊ご瀛楁錛屽垯GET涔熷氨鍙樻垚浜?#8221;鏉′歡GET“錛屽嵆鍙湁婊¤凍涓婅堪瀛楁鎻忚堪鐨勬潯浠剁殑瀹炰綋鎵嶈鍙栧洖錛岃繖鏍峰彲浠ュ噺灝戜竴浜涢潪蹇呴渶鐨勭綉緇滀紶杈擄紝鎴栬呭噺灝戜負鑾峰彇鏌愪竴璧勬簮鐨勫嬈¤姹傦紙濡傜涓嬈℃鏌ワ紝絎簩嬈′笅杞斤級銆傦紙涓鑸殑嫻忚鍣紝閮芥湁涓涓復鏃剁洰褰曪紝鐢ㄦ潵緙撳瓨涓浜涚綉欏典俊鎭紝褰撳啀嬈℃祻瑙堟煇涓〉闈㈢殑鏃跺欙紝鍙笅杞介偅浜涗慨鏀硅繃鐨勫唴瀹癸紝浠ュ姞蹇祻瑙堥熷害錛屽氨鏄繖涓亾鐞嗐傝嚦浜庢鏌ワ紝鍒欏父鐢ㄦ瘮GET鏇村ソ鐨勬柟娉旽EAD鏉ュ疄鐜般傦級濡傛灉HTTP鍖呬腑鍚湁Range澶村瓧孌碉紝閭d箞璇鋒眰URI鎸囧畾鐨勫疄浣撲腑錛屽彧鏈夊喅瀹氳寖鍥存潯浠剁殑閭i儴鍒嗘墠琚彇鍥炴潵銆傦紙鐢ㄨ繃澶氱嚎紼嬩笅杞藉伐鍏風殑鏈嬪弸錛屽彲鑳芥瘮杈冨鏄撶悊瑙h繖涓鐐癸級
銆銆榪欎釜鏂規硶鐨勫吀鍨嬪簲鐢紝鐢ㄦ潵浠巜eb鏈嶅姟鍣ㄤ笅杞芥枃妗c侶ttpClient瀹氫箟浜嗕竴涓被鍙獹etMethod鏉ユ敮鎸佽繖涓柟娉曪紝鐢℅etMethod綾諱腑getResponseBody, getResponseBodyAsStream 鎴?getResponseBodyAsString鍑芥暟灝卞彲浠ュ彇鍒板簲絳斿寘鍖呬綋涓殑鏂囨。錛堝HTML欏甸潰錛変俊鎭傝繖榪欎笁涓嚱鏁頒腑錛実etResponseBodyAsStream閫氬父鏄渶濂界殑鏂規硶錛屼富瑕佹槸鍥犱負瀹冨彲浠ラ伩鍏嶅湪澶勭悊涓嬭澆鐨勬枃妗d箣鍓嶇紦瀛樻墍鏈夌殑涓嬭澆鐨勬暟鎹?/p>
銆銆瀵笹etMethod鐨勬渶甯歌鐨勪笉姝g‘鐨勪嬌鐢紝鏄病鏈夊皢鍏ㄩ儴鐨勫簲絳斾富浣撶殑鏁版嵁璇誨嚭鏉ャ傝繕鏈夛紝蹇呴』娉ㄦ剰瑕佹墜宸ユ槑紜湴灝嗛摼鎺ラ噴鏀俱?br />
銆銆3銆丠ead
銆銆HTTP鐨凥ead鏂規硶錛屼笌Get鏂規硶瀹屽叏涓鑷達紝鍞竴鐨勫樊鍒槸鏈嶅姟鍣ㄤ笉鑳藉湪搴旂瓟鍖呬腑鍖呭惈涓諱綋(message-body)錛岃屼笖涓瀹氫笉鑳藉寘鍚富浣撱備嬌鐢ㄨ繖涓柟娉曪紝鍙互浣垮緱瀹㈡埛鏃犻渶灝嗚祫婧愪笅杞藉洖灝卞彲灝變互寰楀埌涓浜涘叧浜庡畠鐨勫熀鏈俊鎭傝繖涓柟娉曞父鐢ㄦ潵媯鏌ヨ秴閾劇殑鍙闂т互鍙婅祫婧愭渶榪戞湁娌℃湁琚慨鏀廣?br />
銆銆HTTP鐨刪ead鏂規硶鏈鍏稿瀷鐨勫簲鐢紝鏄幏鍙栬祫婧愮殑鍩烘湰淇℃伅銆侶ttpClient瀹氫箟浜咹eadMethod綾繪敮鎸佽繖涓柟娉曪紝HeadMethod綾諱笌鍏跺畠*Method綾諱竴鏍鳳紝鐢?getResponseHeaders()鍙栧洖澶撮儴淇℃伅錛岃屾病鏈夎嚜宸辯殑鐗規畩鏂規硶銆?/p>
銆銆4銆丳ost
銆銆Post鍦ㄨ嫳鏂囨湁“媧鵑┗”鐨勬剰鎬濓紝HTTP鏂規硶POST灝辨槸瑕佹眰鏈嶅姟鍣ㄦ帴鍙楄姹傚寘涓殑瀹炰綋錛屽茍灝嗗叾浣滀負璇鋒眰URI鐨勪笅灞炶祫婧愩備粠鏈川涓婅錛岃繖鎰忓懗鐫鏈嶅姟鍣ㄨ淇濆瓨榪欎釜瀹炰綋淇℃伅錛岃屼笖閫氬父鐢辨湇鍔″櫒绔殑紼嬪簭榪涜澶勭悊銆侾ost鏂規硶鐨勮璁℃剰鍥撅紝鏄浠ヤ竴縐嶇粺涓鐨勬柟寮忓疄鐜頒笅鍒楀姛鑳斤細
銆銆榪欎簺閮芥搷浣滄湡寰呯潃鍦ㄦ湇鍔″櫒绔駭鐢熶竴瀹氱殑“鍓綔鐢?#8221;錛屽淇敼浜嗘暟鎹簱絳夈?br />
銆銆HttpClient瀹氫箟PostMethod綾諱互鏀寔璇TTP鏂規硶錛屽湪httpclient涓紝浣跨敤post鏂規硶鏈変袱涓熀鏈殑姝ラ錛氫負璇鋒眰鍖呭噯澶囨暟鎹紝鐒跺悗璇誨彇鏈嶅姟鍣ㄦ潵鐨勫簲絳斿寘鐨勪俊鎭傞氳繃璋冪敤 setRequestBody()鍑芥暟錛屾潵涓鴻姹傚寘鎻愪緵鏁版嵁錛屽畠鍙互鎺ユ敹涓夌被鍙傛暟錛氳緭鍏ユ祦銆佸悕鍊煎鏁扮粍鎴栧瓧絎︿覆銆傝嚦浜庤鍙栧簲絳斿寘闇瑕佽皟鐢?getResponseBody* 閭d竴緋誨垪鐨勬柟娉曪紝涓嶨ET鏂規硶澶勭悊搴旂瓟鍖呯殑鏂規硶鐩稿悓銆?br />
銆銆甯歌闂鏄紝娌℃湁灝嗗叏閮ㄥ簲絳旇鍙栵紙鏃犺瀹冨紼嬪簭鏄惁鏈夌敤錛夛紝鎴栨病鏈夐噴鏀鵑摼鎺ヨ祫婧愩?/p>
鍙傝冿細
http://msdn.microsoft.com/en-us/magazine/cc163917.aspx
http://www.unixwiz.net/techtips/sql-injection.html
http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf
http://www.securiteam.com/securityreviews/5DP0N1P76E.html
http://xkcd.com/327/
http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/
http://bbs.xiakexing.com/cgi-bin/topic.cgi?forum=34&topic=18&show=0
http://www.cnblogs.com/iloveu/archive/2009/03/17/1414145.html
http://dang.javaeye.com/blog/338367
涓嬮潰鏄竴涓叏闈㈢殑綆榪拌〃錛?/font>
緇勪歡 |
璇存槑 |
BeanUtils | Commons-BeanUtils 鎻愪緵瀵?Java 鍙嶅皠鍜岃嚜鐪丄PI鐨勫寘瑁?/font> |
Betwixt | Betwixt鎻愪緵灝?JavaBean 鏄犲皠鑷?XML 鏂囨。錛屼互鍙婄浉鍙嶆槧灝勭殑鏈嶅姟. |
Chain |
Chain 鎻愪緵瀹炵幇緇勭粐澶嶆潅鐨勫鐞嗘祦紼嬬殑“璐d換閾炬ā寮?#8221;. |
CLI |
CLI 鎻愪緵閽堝鍛戒護琛屽弬鏁幫紝閫夐」錛岄夐」緇勶紝寮哄埗閫夐」絳夌殑綆鍗旳PI. |
Codec |
Codec 鍖呭惈涓浜涢氱敤鐨勭紪鐮佽В鐮佺畻娉曘傚寘鎷竴浜涜闊崇紪鐮佸櫒錛?Hex, Base64, 浠ュ強URL encoder. |
Collections |
Commons-Collections 鎻愪緵涓涓被鍖呮潵鎵╁睍鍜屽鍔犳爣鍑嗙殑 Java Collection妗嗘灦 |
Configuration |
Commons-Configuration 宸ュ叿瀵瑰悇縐嶅悇寮忕殑閰嶇疆鍜屽弬鑰冩枃浠舵彁渚涜鍙栧府鍔? |
Daemon |
涓縐?unix-daemon-like java 浠g爜鐨勬浛浠f満鍒?/font> |
DBCP |
Commons-DBCP 鎻愪緵鏁版嵁搴撹繛鎺ユ睜鏈嶅姟 |
DbUtils |
DbUtils 鏄竴涓?JDBC helper 綾誨簱錛屽畬鎴愭暟鎹簱浠誨姟鐨勭畝鍗曠殑璧勬簮娓呴櫎浠g爜. |
Digester |
Commons-Digester 鏄竴涓?XML-Java瀵硅薄鐨勬槧灝勫伐鍏鳳紝鐢ㄤ簬瑙f瀽 XML閰嶇疆鏂囦歡. |
Discovery |
Commons-Discovery 鎻愪緵宸ュ叿鏉ュ畾浣嶈祫婧?(鍖呮嫭綾? 錛岄氳繃浣跨敤鍚勭妯″紡鏉ユ槧灝勬湇鍔?寮曠敤鍚嶇О鍜岃祫婧愬悕縐? |
EL |
Commons-EL 鎻愪緵鍦↗SP2.0瑙勮寖涓畾涔夌殑EL琛ㄨ揪寮忕殑瑙i噴鍣? |
FileUpload |
FileUpload 浣垮緱鍦ㄤ綘鍙互鍦ㄥ簲鐢ㄥ拰Servlet涓鏄撶殑鍔犲叆寮哄ぇ鍜岄珮鎬ц兘鐨勬枃浠朵笂浼犺兘鍔? |
HttpClient |
Commons-HttpClient 鎻愪緵浜嗗彲浠ュ伐浣滀簬HTTP鍗忚瀹㈡埛绔殑涓涓鏋? |
IO |
IO 鏄竴涓?I/O 宸ュ叿闆? |
Jelly |
Jelly鏄竴涓熀浜?XML 鐨勮剼鏈拰澶勭悊寮曟搸銆?Jelly 鍊熼壌浜?JSP 瀹氭寚鏍囩錛孷elocity, Cocoon鍜孹doclet涓殑鑴氭湰寮曟搸鐨勮澶氫紭鐐廣侸elly 鍙互鐢ㄥ湪鍛戒護琛岋紝 Ant 鎴栬?Servlet涔嬩腑. |
Jexl |
Jexl鏄竴涓〃杈懼紡璇█錛岄氳繃鍊熼壌鏉ヨ嚜浜嶸elocity鐨勭粡楠屾墿灞曚簡JSTL瀹氫箟鐨勮〃杈懼紡璇█. |
JXPath |
Commons-JXPath 鎻愪緵浜嗕嬌鐢╔path璇硶鎿嶇旱絎﹀悎Java綾誨懡鍚嶈鑼冪殑 JavaBeans鐨勫伐鍏楓備篃鏀寔 maps, DOM 鍜屽叾浠栧璞℃ā鍨? |
Lang |
Commons-Lang 鎻愪緵浜嗚澶氳澶氶氱敤鐨勫伐鍏風被闆嗭紝鎻愪緵浜嗕竴浜沯ava.lang涓被鐨勬墿灞曞姛鑳? |
Latka |
Commons-Latka 鏄竴涓狧TTP 鍔熻兘嫻嬭瘯鍖咃紝鐢ㄤ簬鑷姩鍖栫殑QA,楠屾敹鍜岃“鍑忔祴璇? |
Launcher |
Launcher 緇勪歡鏄竴涓氦鍙夊鉤鍙扮殑Java 搴旂敤杞藉叆鍣ㄣ?Commons-launcher 娑堥櫎浜嗛渶瑕佹壒澶勭悊鎴栬匰hell鑴氭湰鏉ヨ澆鍏ava 綾匯?鍘熷鐨?Java 綾繪潵鑷簬Jakarta Tomcat 4.0 欏圭洰. |
Logging |
Commons-Logging 鏄竴涓悇縐?logging API瀹炵幇鐨勫寘瑁圭被. |
Math |
Math 鏄竴涓交閲忕殑錛岃嚜鍖呭惈鐨勬暟瀛﹀拰緇熻緇勪歡錛岃В鍐充簡璁稿闈炲父閫氱敤浣嗘病鏈夊強鏃跺嚭鐜板湪Java鏍囧噯璇█涓殑瀹炶返闂. |
Modeler |
Commons-Modeler 鎻愪緵浜嗗緩妯″吋瀹笿MX瑙勮寖鐨?Mbean鐨勬満鍒? |
Net |
Net 鏄竴涓綉緇滃伐鍏烽泦錛屽熀浜?NetComponents 浠g爜錛屽寘鎷?FTP 瀹㈡埛绔瓑絳? |
Pool |
Commons-Pool 鎻愪緵浜嗛氱敤瀵硅薄姹犳帴鍙o紝涓涓敤浜庡垱寤烘ā鍧楀寲瀵硅薄姹犵殑宸ュ叿鍖咃紝浠ュ強閫氬父鐨勫璞℃睜瀹炵幇. |
Primitives |
Commons-Primitives鎻愪緵浜嗕竴涓洿灝忥紝鏇村揩鍜屾洿鏄撲嬌鐢ㄧ殑瀵笿ava鍩烘湰綾誨瀷鐨勬敮鎸併傚綋鍓嶄富瑕佹槸閽堝鍩烘湰綾誨瀷鐨?collection. |
Validator |
The commons-validator鎻愪緵浜嗕竴涓畝鍗曠殑錛屽彲鎵╁睍鐨勬鏋舵潵鍦ㄤ竴涓猉ML鏂囦歡涓畾涔夋牎楠屽櫒 (鏍¢獙鏂規硶)鍜屾牎楠岃鍒欍傛敮鎸佹牎楠岃鍒欑殑鍜岄敊璇秷鎭殑鍥介檯鍖? |
璇︾粏淇℃伅浣嶄簬錛?a >http://jakarta.apache.org/commons/index.html
鐒跺悗鍦ㄤ竴涓狫SP閲屾垨鑰匰ervlet涓換鎰忚皟鐢ㄥ嵆鍙?
<%=new ThreadDumpBuilder().build() %>
===== END OF THREAD DUMP ===============
鍙傝冭祫鏂?
1. Atlassian Confluence 3.0 綆$悊鎺у埗鍙?/pre>2. JDK鐨凞EMOjdk1.5.0\demo\management\FullThreadDump鍘熸枃錛?a >http://ajava.org/course/java/13843.htmljava.lang
綾?StackTraceElement 鏂規硶錛?/pre>boolean equals(Object obj)
濡傛灉鎸囧畾鐨勫璞℃槸鍙︿竴涓?StackTraceElement 瀹炰緥錛屽茍涓旇瀵硅薄琛ㄧず鐨勬墽琛岀偣涓庤瀹炰緥鐨勭浉鍚岋紝鍒欒繑鍥?ture銆?br /> String getClassName()
榪斿洖綾葷殑瀹屽叏闄愬畾鍚嶏紝璇ョ被鍖呭惈鐢辮鍫嗘爤璺熻釜鍏冪礌鎵琛ㄧず鐨勬墽琛岀偣銆?br /> String getFileName()
榪斿洖婧愭枃浠跺悕錛岃鏂囦歡鍖呭惈鐢辮鍫嗘爤璺熻釜鍏冪礌鎵琛ㄧず鐨勬墽琛岀偣銆?br /> int getLineNumber()
榪斿洖婧愯鐨勮鍙鳳紝璇ヨ鍖呭惈鐢辮鍫嗘爤璇ヨ窡韙厓绱犳墍琛ㄧず鐨勬墽琛岀偣銆?br /> String getMethodName()
榪斿洖鏂規硶鍚嶏紝姝ゆ柟娉曞寘鍚敱璇ュ爢鏍堣窡韙厓绱犳墍琛ㄧず鐨勬墽琛岀偣銆?br /> int hashCode()
榪斿洖姝ゅ爢鏍堣窡韙厓绱犵殑鍝堝笇鐮佸箋?br /> boolean isNativeMethod()
濡傛灉鍖呭惈鐢辮鍫嗘爤璺熻釜鍏冪礌鎵琛ㄧず鐨勬墽琛岀偣鐨勬柟娉曟槸涓涓湰鏈烘柟娉曪紝鍒欒繑鍥?true銆?br /> String toString()
榪斿洖琛ㄧず璇ュ爢鏍堣窡韙厓绱犵殑瀛楃涓層?/pre>
]]>
NumberFormat
鐨勪竴涓叿浣撳瓙綾伙紝鐢ㄤ簬鏍煎紡鍖栧崄榪涘埗鏁板瓧銆傝綾昏璁℃湁鍚勭鍔熻兘錛屼嬌鍏惰兘澶熻В鏋愬拰鏍煎紡鍖栦換鎰忚璦鐜涓殑鏁幫紝鍖呮嫭瀵硅タ鏂硅璦銆侀樋鎷変集璇拰鍗板害璇暟瀛楃殑鏀寔銆傚畠榪樻敮鎸佷笉鍚岀被鍨嬬殑鏁幫紝鍖呮嫭鏁存暟 (123)銆佸畾鐐規暟 (123.4)銆佺瀛﹁鏁版硶琛ㄧず鐨勬暟 (1.23E4)銆佺櫨鍒嗘暟 (12%) 鍜岄噾棰?($123)銆傛墍鏈夎繖浜涘唴瀹歸兘鍙互鏈湴鍖栥?/p>