锘??xml version="1.0" encoding="utf-8" standalone="yes"?>无码乱人伦一区二区亚洲,日韩亚洲翔田千里在线,国产亚洲一卡2卡3卡4卡新区 http://www.tkk7.com/limq/archive/2006/01/19/28585.htmllimq limq Wed, 18 Jan 2006 18:16:00 GMT http://www.tkk7.com/limq/archive/2006/01/19/28585.html http://www.tkk7.com/limq/comments/28585.html http://www.tkk7.com/limq/archive/2006/01/19/28585.html#Feedback 27 http://www.tkk7.com/limq/comments/commentRss/28585.html http://www.tkk7.com/limq/services/trackbacks/28585.html 闃呰鍏ㄦ枃 ]]> 鍥涜垗浜斿叆淇濈暀灝忔暟鍚庝袱浣?/title> http://www.tkk7.com/limq/archive/2005/09/21/13694.htmllimq limq Wed, 21 Sep 2005 15:59:00 GMT http://www.tkk7.com/limq/archive/2005/09/21/13694.html http://www.tkk7.com/limq/comments/13694.html http://www.tkk7.com/limq/archive/2005/09/21/13694.html#Feedback 2 http://www.tkk7.com/limq/comments/commentRss/13694.html http://www.tkk7.com/limq/services/trackbacks/13694.html
1 /** 2 * Contains static utility methods. 3 */ 4 public class BOUtils { 5 6 public static Double getRoundedDouble( double unroundedValue ){ 7 // Get the integer portion of the value 8 double intPortion = Math.floor( unroundedValue ); 9 10 // Get the unrounded decimal portion 11 double unroundedDecimalPortion = ( unroundedValue - intPortion ); 12 13 /* ALERT - This next code interferes with I18N. We eventually need */ 14 /* to change this not assume only round to 2 decimal places. */ 15 16 /* Multiply the decimal places by 100, which shitfs the decimal point 17 /* two places to the left. Then round it so that we get a round to 18 /* two decimal places. For example, if we started with 17.655 and stripped 19 /* off the int portion, which left .655. After we shift, we are left with 20 /* 65.5. Then a round will gives us 66. We can then put it all back 21 /* together */ 22 double roundedDecimalPortion = Math.round( unroundedDecimalPortion * 100 ); 23 24 // Shift the decimal point back two places to the right 25 roundedDecimalPortion = roundedDecimalPortion / 100 ; 26 27 // Add the int portion and decimal portions back together 28 double total = intPortion + roundedDecimalPortion; 29 30 return new Double( total ); 31 } 32 }
]]>Jakarta Commons:宸х敤綾誨拰緇勪歡錛堣漿錛?/title> http://www.tkk7.com/limq/archive/2005/09/21/13611.htmllimq limq Wed, 21 Sep 2005 02:03:00 GMT http://www.tkk7.com/limq/archive/2005/09/21/13611.html http://www.tkk7.com/limq/comments/13611.html http://www.tkk7.com/limq/archive/2005/09/21/13611.html#Feedback 0 http://www.tkk7.com/limq/comments/commentRss/13611.html http://www.tkk7.com/limq/services/trackbacks/13611.html 銆銆Commons鐨勫寘鍒嗘垚涓ら儴鍒嗭細Sandbox錛孋ommons浠g爜搴撱係andbox鏄竴涓祴璇曞鉤鍙幫紝鐢ㄦ潵媯楠屽悇縐嶈鎯熾佽鍒掋傛湰鏂囦粙緇嶇殑緇勪歡灞炰簬Commons浠g爜搴擄紝鏂囩珷灝嗗睍紺哄悇涓粍浠剁殑鍔熻兘銆侀傜敤鍦哄悎錛屽茍閫氳繃綆鍗曠殑渚嬪瓙浠嬬粛鍏剁敤娉曘? 銆銆涓銆佹榪?/b> 銆銆鍙噸鐢ㄦф槸Jakarta Commons欏圭洰鐨勭伒欖傛墍鍦ㄣ傝繖浜涘寘鍦ㄨ璁¢樁孌靛氨宸茬粡鑰冭檻浜嗗彲閲嶇敤鎬ч棶棰樸傚叾涓竴浜涘寘錛屼緥濡侰ommons閲岄潰鐢ㄦ潵璁板綍鏃ュ織鐨凩ogging鍖咃紝鏈鍒濇槸涓哄叾浠栭」鐩璁$殑錛屼緥濡侸akarta Struts欏圭洰錛屽綋浜轟滑鍙戠幇榪欎簺鍖呭浜庡叾浠栭」鐩篃闈炲父鏈夌敤錛岃兘澶熸瀬澶у湴甯姪鍏朵粬欏圭洰鐨勫紑鍙戯紝浠栦滑鍐沖畾涓鴻繖浜涘寘鏋勯犱竴涓?鍏叡"鐨勫瓨鏀句綅緗紝榪欏氨鏄疛akarta Commons欏圭洰銆? 銆銆涓轟簡鐪熸鎻愰珮鍙噸鐢ㄦэ紝姣忎竴涓寘閮藉繀欏諱笉渚濊禆浜庡叾浠栧ぇ鍨嬬殑妗嗘灦鎴栭」鐩傚洜姝わ紝Commons欏圭洰鐨勫寘鍩烘湰涓婇兘鏄嫭绔嬬殑錛屼笉浠呮槸鐩稿浜庡叾浠栭」鐩殑鐙珛錛岃屼笖鐩稿浜嶤ommons鍐呴儴鐨勫ぇ閮ㄥ垎鍏朵粬鍖呯嫭绔嬨傝櫧鐒跺瓨鍦ㄤ竴浜涗緥澶栫殑鎯呭喌錛屼緥濡侭etwixt鍖呰鐢ㄥ埌XML API錛屼絾緇濆ぇ閮ㄥ垎鍙嬌鐢ㄦ渶鍩烘湰鐨凙PI錛屽叾涓昏鐩殑灝辨槸瑕佽兘澶熼氳繃綆鍗曠殑鎺ュ彛鏂逛究鍦拌皟鐢ㄣ? 銆銆涓嶈繃鐢變簬宕囧皻綆媧侊紝璁稿鍖呯殑鏂囨。鍙樺緱榪囦簬綆闄嬶紝緙轟箯緇存姢鍜屾敮鎸侊紝鐢氳嚦鏈変竴閮ㄥ垎榪樻湁閿欒鐨勯摼鎺ワ紝鏂囨。涔熷皯寰楀彲鎬溿傚ぇ閮ㄥ垎鐨勫寘闇瑕佹垜浠嚜宸卞幓鎵懼嚭鍏剁敤娉曪紝鐢氳嚦鏈夋椂榪橀渶瑕佹垜浠嚜宸卞幓鍒嗘瀽鍏墮傜敤鍦哄悎銆傛湰鏂囧皢閫愪竴浠嬬粛榪欎簺鍖咃紝甯屾湜鑳藉甯姪浣犺繀閫熸帉鎻¤繖涓縐瘡浜嗚澶氫漢蹇冭鐨勫厤璐逛唬鐮佸簱銆? 銆銆璇存槑錛欽akarta Commons鍜?a target="_blank">Apache Commons鏄笉鍚岀殑錛屽悗鑰呮槸Apache Software Foundation鐨勪竴涓《灞傞」鐩紝鍓嶈呭垯鏄疛akarta欏圭洰鐨勪竴涓瓙欏圭洰錛屽悓鏄篃鏄湰鏂囪璁ㄨ鐨勪富瑙掋傛湰鏂囧悗闈㈠嚒鏄彁鍒癈ommons鐨勫湴鏂歸兘鏄寚Jakarta鐨凜ommons銆? 銆銆涓轟簡渚夸簬璇存槑錛屾湰鏂囨妸Commons欏圭洰鍗佸叓涓垚鍝佺駭鐨勭粍浠訛紙鎺掗櫎浜咵L銆丩atka鍜孞exl錛夊垎鎴?綾伙紝濡備笅琛ㄦ墍紺恒? 鍙傝?http://www.tkk7.com/sean/archive/2005/08.html 聽 銆銆蹇呴』鎸囧嚭鐨勬槸錛岃繖縐嶅垎綾誨彧鏄負浜嗘柟渚挎枃绔犺鏄庯紝Commons欏圭洰閲岄潰瀹為檯涓婂茍涓嶅瓨鍦ㄨ繖縐嶅垎綾伙紝鍚屾椂榪欎簺鍒嗙被鐨勮竟鐣屾湁鏃朵篃瀛樺湪涓瀹氱殑閲嶅彔銆? 銆銆鏈枃棣栧厛浠嬬粛Web鐩稿叧綾誨拰鍏朵粬綾婚噷闈㈢殑緇勪歡錛屼笅涓綃囨枃绔犲皢娑夊強XML鐩稿叧銆佸寘瑁呰繖涓ょ被錛屾渶鍚庝竴綃囨枃绔犱笓闂ㄤ粙緇嶅睘浜庡伐鍏風被鐨勫寘銆? 銆銆浜屻佸叾浠栫被 銆銆CLI銆丏iscovery銆丩ang鍜孋ollections鍖呭綊鍏ュ叾浠栫被錛岃繖鏄洜涓哄畠浠兘鍚勮嚜閽堝鏌愪釜鏄庣‘銆佸疄鐢ㄧ殑灝忕洰鏍囷紝鍙皳涓撹岀簿銆? 銆銆2.1 CLI 銆銆鈻?姒傚喌錛欳LI鍗矯ommand Line Interface錛屼篃灝辨槸"鍛戒護琛屾帴鍙?錛屽畠涓篔ava紼嬪簭璁塊棶鍜岃В鏋愬懡浠よ鍙傛暟鎻愪緵浜嗕竴縐嶇粺涓鐨勬帴鍙c? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a> 銆銆鈻?浣曟椂閫傜敤錛氬綋浣犻渶瑕佷互涓縐嶄竴鑷寸殑銆佺粺涓鐨勬柟寮忚闂懡浠よ鍙傛暟涔嬫椂銆? 銆銆鈻?紺轟緥搴旂敤錛欳LIDemo.java銆侰LASSPATH涓繀欏誨寘鍚玞ommons-cli-1.0.jar銆? 銆銆鈻?璇存槑錛? 銆銆鏈夊灝戞浣犱笉寰椾笉涓轟竴涓柊鐨勫簲鐢ㄧ▼搴忛噸鏂拌璁℃柊鐨勫懡浠よ鍙傛暟澶勭悊鏂瑰紡錛熷鏋滆兘澶熷彧鐢ㄦ煇涓崟涓鐨勬帴鍙o紝緇熶竴瀹屾垚璇稿瀹氫箟杈撳叆鍙傛暟錛堟槸鍚︿負寮哄埗鍙傛暟錛屾暟鍊艱繕鏄瓧絎︿覆錛岀瓑絳夛級銆佹牴鎹竴緋誨垪瑙勫垯鍒嗘瀽鍙傛暟銆佺‘瀹氬簲鐢ㄨ閲囩敤鐨勮礬寰勭瓑浠誨姟錛岄偅璇ュ濂斤紒絳旀灝卞湪CLI銆? 銆銆鍦–LI涓紝姣忎竴涓兂瑕佸湪鍛戒護涓寚瀹氱殑鍙傛暟閮芥槸涓涓狾ption瀵硅薄銆傞鍏堝垱寤轟竴涓狾ptions瀵硅薄錛屽皢鍚勪釜Option瀵硅薄鍔犲叆Options瀵硅薄錛岀劧鍚庡埄鐢–LI鎻愪緵鐨勬柟娉曟潵瑙f瀽鐢ㄦ埛鐨勮緭鍏ュ弬鏁般侽ption瀵硅薄鍙互瑕佹眰鐢ㄦ埛蹇呴』杈撳叆鏌愪釜鍙傛暟錛屼緥濡傚繀欏誨湪鍛戒護琛屾彁渚涙枃浠跺悕瀛椼傚鏋滄煇涓弬鏁版槸蹇呴』鐨勶紝鍒涘緩Option瀵硅薄鐨勬椂鍊欏氨瑕佹樉寮忓湴鎸囧畾銆? 銆銆涓嬮潰鏄嬌鐢–LI鐨勬楠ゃ?// 鈥?
// 鈶? 鍒涘緩涓涓狾ptions錛?
Options options = new Options();
options.addOption("t", false, "current time");
// 鈥?
// 鈶?鍒涘緩涓涓В鏋愬櫒錛屽垎鏋愯緭鍏ワ細
CommandLineParser parser = new BasicParser();
CommandLine cmd;
try {
cmd = parser.parse(options, args);
} catch (ParseException pe) {
usage(options);
return;
}
// 鈥?
// 鈶?鏈鍚庡氨鍙互鏍規嵁鐢ㄦ埛鐨勮緭鍏ワ紝閲囧彇鐩稿簲鐨勬搷浣滐細
if (cmd.hasOption("n")) {
System.err.println("Nice to meet you: " +
cmd.getOptionValue('n'));
}
銆銆榪欏氨鏄嬌鐢–LI鐨勫畬鏁磋繃紼嬩簡銆傚綋鐒訛紝CLI榪樻彁渚涗簡鍏朵粬楂樼駭閫夐」錛屼緥濡傛帶鍒舵牸寮忓拰瑙f瀽榪囩▼絳夛紝浣嗗熀鏈殑浣跨敤鎬濊礬浠嶆槸涓鑷寸殑銆傝鍙傝鏈枃鏈鍚庢彁渚涚殑紺轟緥紼嬪簭銆? 銆銆2.2 Discovery 銆銆鈻?姒傚喌錛欴iscovery緇勪歡鏄彂鐜版ā寮忥紙Discovery Pattern錛夌殑涓涓疄鐜幫紝瀹冪殑鐩爣鏄寜鐓т竴縐嶇粺涓鐨勬柟寮忓畾浣嶅拰瀹炰緥鍖栫被浠ュ強鍏朵粬璧勬簮銆? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆? 銆銆鈻?浣曟椂閫傜敤錛氬綋浣犳兂鐢ㄦ渶浣崇殑綆楁硶鍦↗ava紼嬪簭涓煡鎵綣ava鎺ュ彛鐨勫悇縐嶅疄鐜頒箣鏃躲? 銆銆鈻?搴旂敤瀹炰緥錛欴iscoveryDemo.java錛孧yInterface.java錛孧yImpl1.java錛孧yImpl2.java錛孧yInterface銆傝姹侰LASSPATH涓繀欏誨寘鍚玞ommons-discovery.jar鍜宑ommons-logging.jar銆? 銆銆鈻?璇存槑錛? 銆銆Discovery鐨勬剰鎬濆氨鏄?鍙戠幇"錛屽畠璇曞浘鐢ㄦ渶浣崇殑綆楁硶鏌ユ壘鏌愪釜鎺ュ彛鐨勬墍鏈夊凡鐭ョ殑瀹炵幇銆傚湪浣跨敤鏈嶅姟鐨勫満鍚堬紝褰撴垜浠兂瑕佹煡鎵炬煇涓湇鍔$殑鎵鏈夊凡鐭ョ殑鎻愪緵鑰呮椂錛孌iscovery緇勪歡灝ゅ叾鏈夌敤銆? 銆銆鑰冭檻涓涓嬭繖縐嶆儏褰細鎴戜滑涓烘煇涓壒鍒鏉傜殑浠誨姟緙栧啓浜嗕竴涓帴鍙o紝鎵鏈夎鎺ュ彛鐨勫疄鐜伴兘鐢ㄥ悇涓嶇浉鍚岀殑鏂瑰紡鏉ュ畬鎴愯繖涓鏉備換鍔★紝鏈緇堢敤鎴峰彲浠ユ牴鎹渶瑕佹潵閫夋嫨瀹屾垚浠誨姟鐨勫叿浣撴柟寮忋傞偅涔堬紝鍦ㄨ繖縐嶆儏褰笅錛屾渶緇堢敤鎴峰簲璇ョ敤浠涔堝姙娉曟潵鎵懼嚭鎺ュ彛鐨勬墍鏈夊彲鐢ㄥ疄鐜幫紙鍗沖彲鑳界殑瀹屾垚浠誨姟鐨勬柟寮忥級鍛紵 銆銆涓婇潰鎻忚堪鐨勬儏褰㈠氨鏄墍璋撶殑鏈嶅姟-鏈嶅姟鎻愪緵鑰呬綋緋匯傛湇鍔$殑鍔熻兘鐢辨帴鍙f弿榪幫紝鏈嶅姟鎻愪緵鑰呭垯鎻愪緵鍏蜂綋鐨勫疄鐜般傜幇鍦ㄧ殑闂鏄渶緇堢敤鎴瘋鐢ㄦ煇縐嶅姙娉曟潵瀵繪壘緋葷粺涓凡緇忓畨瑁呬簡鍝簺鏈嶅姟鎻愪緵鑰呫傚湪榪欑鎯呭艦涓嬶紝Discovery緇勪歡灝卞緢鏈夌敤浜嗭紝瀹冧笉浠呭彲浠ョ敤鏉ユ煡鎵鵑偅浜涘疄鐜頒簡鐗瑰畾鎺ュ彛鐨勭被錛岃屼笖榪樺彲浠ョ敤鏉ユ煡鎵捐祫婧愶紝渚嬪鍥劇墖鎴栧叾浠栨枃浠剁瓑銆傚湪鎵ц榪欎簺鎿嶄綔鏃訛紝Discovery閬典粠Sun鐨勬湇鍔℃彁渚涜呬綋緋繪墍瀹氫箟鐨勮鍒欍? 銆銆鐢變簬榪欎釜鍘熷洜錛屼嬌鐢―iscovery緇勪歡紜疄甯︽潵璁稿鏂逛究銆傝璇昏呭弬闃呮湰鏂囧悗闈㈢ず渚嬬▼搴忎腑鐨勬帴鍙yInterface.java鍜屼袱涓疄鐜扮被MyImpl1.java銆丮yImple2.java錛屼簡瑙d笅闈緥瀛愮殑緇嗚妭銆傚湪浣跨敤Discovery鐨勬椂鍊欒鎻愪緵MyInterface鏂囦歡錛屾妸瀹冩斁鍏ETA-INF/services鐩綍錛屾敞鎰忚鏂囦歡鐨勫悕瀛楀搴旀帴鍙g殑瀹屾暣闄愬畾鍚嶇О錛團ully Qualified Name錛夛紝濡傛灉鎺ュ彛灞炰簬鏌愪釜鍖咃紝璇ユ枃浠剁殑鍚嶅瓧涔熷繀欏葷浉搴斿湴鏀瑰彉銆?// 鈥?
// 鈶?鍒涘緩涓涓被瑁呭叆鍣ㄧ殑瀹炰緥銆?
ClassLoaders loaders =
ClassLoaders.getAppLoaders(MyInterface.class, getClass(), false);
// 鈥?
// 鈶?鐢―iscoverClass鐨勫疄渚嬫潵鏌ユ壘瀹炵幇綾匯?
DiscoverClass discover = new DiscoverClass(loaders);
// 鈥?
// 鈶?鏌ユ壘瀹炵幇浜嗘寚瀹氭帴鍙g殑綾伙細
Class implClass = discover.find(MyInterface.class);
System.err.println("Implementing Provider: " + implClass.getName());
銆銆榪愯涓婇潰鐨勪唬鐮侊紝灝卞彲浠ュ緱鍒板湪MyInterface鏂囦歡涓敞鍐岀殑綾匯傚啀嬈℃彁閱掞紝濡傛灉浣犵殑瀹炵幇鏄皝瑁呭湪鍖呴噷闈㈢殑錛屽湪榪欓噷娉ㄥ唽鐨勫悕瀛椾篃搴旇浣滅浉搴斿湴淇敼錛屽鏋滆鏂囦歡娌℃湁鏀懼湪姝g‘鐨勪綅緗紝鎴栬呮寚瀹氬悕瀛楃殑瀹炵幇綾諱笉鑳芥壘鍒版垨瀹炰緥鍖栵紝紼嬪簭灝嗘姏鍑篋iscoverException錛岃〃紺烘壘涓嶅埌絎﹀悎鏉′歡鐨勫疄鐜般備笅闈㈡槸MyInterface鏂囦歡鍐呭鐨勪竴涓緥瀛愶細MyImpl2 # Implementation 2銆? 銆銆褰撶劧錛屽疄鐜扮被鐨勬敞鍐屽姙娉曞茍闈炲彧鏈夎繖涔堜竴縐嶏紝鍚﹀垯鐨勮瘽Discovery鐨勫疄鐢ㄦу氨瑕佸ぇ鎵撴姌鎵d簡錛佸疄闄呬笂錛屾寜鐓iscovery鍐呴儴鐨勭被鏌ユ壘鏈哄埗錛屾寜鐓ц繖縐嶆柟娉曟敞鍐岀殑綾誨皢鏄疍iscovery鏈鍚庢壘鍒扮殑綾匯傚彟涓縐嶅父鐢ㄧ殑娉ㄥ唽鏂規硶鏄氳繃緋葷粺灞炴ф垨鐢ㄦ埛瀹氫箟鐨勫睘鎬ф潵浼犻掑疄鐜扮被鐨勫悕瀛楋紝渚嬪錛屾斁寮僊ETA-INF/services鐩綍涓嬬殑鏂囦歡錛屾敼涓烘墽琛宩ava -DMyInterface=MyImpl1 DiscoveryDemo鍛戒護鏉ヨ繍琛岀ず渚嬬▼搴忥紝榪欓噷鐨勭郴緇熷睘鎬ф槸鎺ュ彛鐨勫悕瀛楋紝鍊兼槸璇ユ帴鍙g殑鎻愪緵鑰咃紝榪愯鐨勭粨鏋滄槸瀹屽叏涓鏍風殑銆? 銆銆Discovery榪樺彲浠ョ敤鏉ュ垱寤烘湇鍔℃彁渚涜呯殑(singleton)瀹炰緥騫惰皟鐢ㄥ叾鏂規硶錛岃娉曞涓嬶細((MyInterface)discover.newInstance(MyInterface.class)).myMethod();銆傛敞鎰忓湪榪欎釜渚嬪瓙涓紝鎴戜滑騫朵笉鐭ラ亾鍒板簳鍝竴涓湇鍔℃彁渚涜呭疄鐜頒簡myMethod錛岀敋鑷蟲垜浠牴鏈笉蹇呭叧蹇冭繖涓鐐廣傚叿浣撶殑鎯呭艦涓庤繍琛岃繖孌典唬鐮佺殑鏂瑰紡浠ュ強榪愯鐜涓凡緇忔敞鍐屼簡浠涔堟湇鍔℃彁渚涜呮湁鍏籌紝鍦ㄤ笉鍚岀殑鐜涓嬭繍琛岋紝瀹為檯寰楀埌鐨勬湇鍔℃彁渚涜呭彲鑳戒笉鍚屻? 銆銆2.3 Lang 銆銆鈻?姒傚喌錛歀ang鏄痡ava.lang鐨勪竴涓墿灞曞寘錛屽鍔犱簡璁稿鎿嶄綔String鐨勫姛鑳斤紝鍙﹀榪樻敮鎸丆椋庢牸鐨勬灇涓鵑噺銆? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆? 銆銆鈻?浣曟椂閫傜敤錛氬綋java.lang鍖呮彁渚涚殑鏂規硶鏈兘婊¤凍闇瑕侊紝鎯寵鏇村鐨勫姛鑳芥潵澶勭悊String銆佹暟鍊煎拰System灞炴ф椂錛涜繕鏈夛紝褰撲綘鎯寵浣跨敤C椋庢牸鐨勬灇涓鵑噺鏃躲? 銆銆鈻?紺轟緥搴旂敤錛歀angDemo.java錛孧ortgage.java錛孫nTV.java銆侰LASSPATH涓繀欏誨寘鍚玞ommons-lang.jar銆? 銆銆鈻?璇存槑錛? 銆銆榪欎釜鍖呮彁渚涗簡璁稿鍑轟簬鏂逛究鐩殑鑰屾彁渚涚殑鏂規硶錛屽畠浠腑鐨勫ぇ澶氭暟鏄潤鎬佺殑錛岀畝鍖栦簡鏃ュ父緙栫爜宸ヤ綔銆係tringUtils綾繪槸鍏朵腑鐨勪竴涓唬琛紝瀹冧嬌寰楀紑鍙戣呰兘澶熻秴瓚婃爣鍑嗙殑java.lang.String鍖呮潵澶勭悊瀛楃涓層備嬌鐢ㄨ繖浜涙柟娉曞緢綆鍗曪紝閫氬父鍙鍦ㄨ皟鐢ㄩ潤鎬佹柟娉曟椂鎻愪緵閫傚綋鐨勫弬鏁板氨鍙互浜嗐備緥濡傦紝濡傛灉瑕佸皢鏌愪釜鍗曡瘝鐨勯瀛楃鏀逛負澶у啓錛屽彧闇璋冪敤錛歋tringUtils.capitalise("name")錛岃皟鐢ㄧ殑杈撳嚭緇撴灉鏄疦ame銆傝嫻忚StringUtils API鏂囨。浜嗚В鍏朵粬闈欐佹柟娉曪紝涔熻浣犱細鎵懼埌涓浜涘彲浠ョ洿鎺ユ嬁鏉ヤ嬌鐢ㄧ殑浠g爜銆傛湰鏂囨彁渚涚殑紺轟緥紼嬪簭紺鴻寖浜嗗叾涓竴浜涙柟娉曠殑浣跨敤銆? 銆銆鍙︿竴涓煎緱娉ㄦ剰鐨勭被鏄疪andomStringUtils錛屽畠鎻愪緵浜嗙敓鎴愰殢鏈哄瓧絎︿覆鐨勬柟娉曪紝鐢ㄦ潵鍒涘緩闅忔満瀵嗙爜瀹炲湪澶柟渚夸簡銆? 銆銆NumberUtils綾繪彁渚涗簡澶勭悊鏁板兼暟鎹殑鏂規硶錛岃澶氭柟娉曞煎緱涓鐢紝渚嬪瀵繪壘鏈澶с佹渶灝忔暟鐨勬柟娉曪紝灝哠tring杞崲鎴愭暟鍊肩殑鏂規硶錛岀瓑絳夈侼umberRange鍜孋harRange綾誨垎鍒彁渚涗簡鍒涘緩鍜屾搷浣滄暟鍊艱寖鍥淬佸瓧絎﹁寖鍥寸殑鏂規硶銆? 銆銆Builder鍖呴噷鐨勭被鎻愪緵浜嗕竴浜涚壒孌婄殑鏂規硶錛屽彲鐢ㄦ潵鏋勯犵被鐨則oString銆乭ashCode銆乧ompareTo鍜宔quals鏂規硶錛屽叾鍩烘湰鎬濊礬灝辨槸鏋勯犲嚭綾葷殑楂樿川閲忕殑toString銆乭ashCode銆乧ompareTo鍜宔quals鏂規硶錛屼粠鑰屽厤鍘諱簡鐢ㄦ埛鑷繁瀹氫箟榪欎簺鏂規硶涔嬪姵錛屽彧瑕佽皟鐢ㄤ竴涓婤uilder鍖呴噷闈㈢殑鏂規硶灝卞彲浠ヤ簡銆備緥濡傦紝鎴戜滑鍙互鐢═oStringBuilder鏉ユ瀯閫犲嚭綾葷殑toString鎻忚堪錛屽涓嬩緥鎵紺猴細 public class Mortgage {
private float rate;
private int years;
....
public String toString() {
return new ToStringBuilder(this).
append("rate", this.rate).
append("years", this.years).
toString();
}
}
銆銆浣跨敤榪欑被鏂規硶鏈変粈涔堝ソ澶勫憿錛熸樉鐒訛紝瀹冧嬌寰楁垜浠湁鍙兘閫氳繃涓縐嶇粺涓鐨勬柟寮忓鐞嗘墍鏈夋暟鎹被鍨嬨傛墍鏈塀uilder鏂規硶鐨勭敤娉曢兘鍜屼笂渚嬬浉浼箋? 銆銆Java娌℃湁C椋庢牸鐨勬灇涓鵑噺錛屼負姝わ紝lang鍖呮彁渚涗簡涓涓被鍨嬪畨鍏ㄧ殑Enum綾誨瀷錛屽~琛ヤ簡絀虹櫧銆侲num綾繪槸鎶借薄鐨勶紝濡傛灉浣犺鍒涘緩鏋氫婦閲忥紝灝辮鎵╁睍Enum綾匯備笅闈㈢殑渚嬪瓙娓呮鍦拌鏄庝簡Enum鐨勭敤娉曘?import org.apache.commons.lang.enum.Enum;
import java.util.Map;
import java.util.List;
import java.util.Iterator;
public final class OnTV extends Enum {
public static final OnTV IDOL=
new OnTV("Idol");
public static final OnTV SURVIVOR =
new OnTV("Survivor");
public static final OnTV SEINFELD =
new OnTV("Seinfeld");
private OnTV(String show) {
super(show);
}
public static OnTV getEnum(String show){
return (OnTV) getEnum(OnTV.class, show);
}
public static Map getEnumMap() {
return getEnumMap(OnTV.class);
}
public static List getEnumList() {
return getEnumList(OnTV.class);
}
public static Iterator iterator() {
return iterator(OnTV.class);
}
}
銆銆浠ュ悗鎴戜滑灝卞彲浠ユ寜鐓т笅闈㈢殑鏂瑰紡浣跨敤鏋氫婦鍙橀噺錛歄nTV.getEnum("Idol")銆傝璋冪敤浠庡墠闈㈠垱寤虹殑鏋氫婦鏁版嵁綾誨瀷榪斿洖Idol銆傝繖涓緥瀛愭瘮杈冪畝鍗曪紝瀹為檯涓奅num綾昏繕鎻愪緵浜嗚澶氭湁鐢ㄧ殑鏂規硶錛岃鍙傝鏈枃鍚庨潰鎻愪緵鐨勫畬鏁村疄渚嬨? 銆銆2.4 Collections 銆銆鈻?姒傚喌錛氭墿灞曚簡Java Collection妗嗘灦錛屽娣諱簡鏂扮殑鏁版嵁緇撴瀯銆佽凱浠f満鍒跺拰姣旇緝鎿嶄綔絎︺? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆? 銆銆鈻?浣曟椂閫傜敤錛氬嚑涔庢墍鏈夐渶瑕佹搷浣滄暟鎹粨鏋勭殑閲嶈Java寮鍙戦」鐩兘鍙互浣跨敤Collections API銆傚拰Java鐨勬爣鍑嗗疄鐜扮浉姣旓紝Collections API鏈夌潃璇稿浼樺娍銆? 銆銆鈻?紺轟緥搴旂敤錛欳ollectionsDemo.java銆傝姹侰LASSPATH涓寘鍚玞ommons-collections.jar銆? 銆銆鈻?璇存槑錛? 銆銆瑕佸湪鏈夐檺鐨勬枃绔犵瘒騫呬箣鍐呰灝藉湴浠嬬粛 Collections API瀹炲湪鏄お鍥伴毦浜嗭紝涓嶈繃榪欓噷浠嶅皢娑電洊澶у鏁版渶閲嶈鐨勭被錛屽笇鏈涜兘澶熷紩璧蜂綘鐨勫叴瓚o紝璁ょ湡浜嗚В涓涓嬪叾浣欑殑綾匯侰ollections鏈韓鐨勬枃妗d篃鎻愪緵浜嗚澶氳祫鏂欏茍瑙i噴浜嗘瘡涓涓被鐨勭敤娉曘? 銆銆Bag鎺ュ彛鎵╁睍鏍囧噯鐨凧ava Collection錛屽厑璁哥敓鎴愯鏁板櫒鏉ヨ窡韙狟ag閲岄潰鐨勬墍鏈夊厓绱犮傚綋浣犳兂瑕佽窡韙繘鍑烘煇涓泦鍚堢殑鍏冪礌鐨勬繪暟鏃訛紝Bag鏄潪甯告湁鐢ㄧ殑銆傜敱浜嶣ag鏈韓鏄竴涓帴鍙o紝鎵浠ュ疄闄呬嬌鐢ㄧ殑搴旇鏄疄鐜頒簡璇ユ帴鍙g殑綾伙紝渚嬪HashBag鎴朤reeBag--浠庤繖浜涚被鐨勫悕瀛椾篃鍙互鐪嬪嚭錛孒ashBag瀹炵幇鐨勬槸涓涓狧ashMap鐨凚ag錛岃孴reeBag瀹炵幇鐨勬槸TreeMap鐨凚ag銆侭ag鎺ュ彛涓袱涓渶閲嶈鐨勬柟娉曟槸錛歡etCount(Object o)錛岀敤鏉ヨ繑鍥濨ag閲岄潰鐗瑰畾瀵硅薄鐨勫嚭鐜版鏁幫紱uniqueSet()錛岃繑鍥炴墍鏈夊敮涓鍏冪礌銆? 銆銆Buffer鎺ュ彛鍏佽鎸夌収棰勫畾涔夌殑嬈″簭鍒犻櫎闆嗗悎涓殑瀵硅薄錛屽垹闄ゆ搴忓彲浠ユ槸LIFO錛圠ast In First Out錛屽悗榪涘厛鍑猴級錛屾垨FIFO錛團irst In First Out錛屽厛榪涘厛鍑猴級錛屽彟澶栬繕鍙互鏄嚜瀹氫箟鐨勬搴忋備笅闈㈡潵鐪嬬湅濡備綍瀹炵幇涓涓狟uffer錛屾寜鐓ц嚜鐒舵搴忓垹闄ゅ厓绱犮? 銆銆BinaryHeap綾誨疄鐜頒簡Buffer鎺ュ彛錛岃兘澶熸寜鐓ц嚜鐒舵搴忓垹闄ゅ厓绱犮傚鏋滆棰犲掓搴忥紝鍒欏繀欏諱紶鍏ヤ竴涓猣alse錛屽憡璇塇eap閲囩敤鑷劧嬈″簭鐨勯嗗簭銆?BinaryHeap heap = new BinaryHeap();
// 鈥?
// 灝嗗厓绱犲姞鍏ヨHeap
heap.add(new Integer(-1));
heap.add(new Integer(-10));
heap.add(new Integer(0));
heap.add(new Integer(-3));
heap.add(new Integer(5));
//鈥?
// 鍒犻櫎涓涓厓绱?
heap.remove();
銆銆璋冪敤璇eap鐨剅emove錛屾寜鐓ц嚜鐒舵搴忥紝鍏冪礌闆嗗悎涓殑-10灝嗚鍒犻櫎銆傚鏋滄垜浠姹傛寜鐓ч嗗簭鎺掑簭錛屽垯琚垹闄ょ殑灝嗘槸5銆? 銆銆FastArrayList銆丗astHashMap鍜孎astTreeMap綾昏兘澶熸寜鐓т袱縐嶆ā寮忔搷浣滐紝瓚呰秺浜嗕笌瀹冧滑瀵瑰簲鐨勬爣鍑咰ollection銆傜涓縐嶆ā寮忔槸"鎱㈡ā寮?錛岀被鐨勪慨鏀規搷浣滐紙娣誨姞銆佸垹闄ゅ厓绱狅級鏄悓姝ョ殑銆備笌姝ょ浉瀵癸紝鍙︿竴縐嶆ā寮忔槸"蹇ā寮?錛屽榪欎簺綾葷殑璁塊棶鍋囧畾涓哄彧璇繪搷浣滐紝鍥犳涓嶉渶瑕佸悓姝ワ紝閫熷害杈冨揩銆傚湪蹇ā寮忎腑錛岀粨鏋勬х殑鏀瑰姩閫氳繃涓嬪垪鏂瑰紡瀹屾垚錛氶鍏堝厠闅嗙幇鏈夌殑綾伙紝淇敼鍏嬮殕寰楀埌鐨勭被錛屾渶鍚庣敤鍏嬮殕寰楀埌鐨勭被鏇挎崲鍘熸湁鐨勭被銆侳astArrayList銆丗astHashMap鍜孎astTreeMap綾葷壒鍒傚悎浜庨偅縐嶅垵濮嬪寲涔嬪悗澶ч儴鍒嗘搷浣滈兘鏄彧璇繪搷浣滅殑澶氱嚎紼嬬幆澧冦? 銆銆iterators鍖呬負鍚勭闆嗗悎鍜屽璞℃彁渚涙爣鍑咼ava Collection鍖呮病鏈夋彁渚涚殑榪唬鍣ㄣ傛湰鏂囩殑紺轟緥搴旂敤紺鴻寖浜咥rrayIterator錛岄氳繃榪唬鏂瑰紡璁塊棶Array鐨勫唴瀹廣俰terators鍖呴噷闈㈠悇縐嶈凱浠e櫒鐨勭敤娉曞熀鏈笂涓庢爣鍑咼ava榪唬鍣ㄤ竴鏍楓? 銆銆鏈鍚庯紝comparators鍖呮彁渚涗簡涓浜涘疄鐢ㄧ殑姣旇緝絎︺傛墍璋撴瘮杈冪鍏跺疄涔熸槸涓涓被錛屽畠瀹氫箟鐨勬槸濡備綍姣旇緝涓や釜灞炰簬鍚屼竴綾葷殑瀵硅薄錛屽喅瀹氬畠浠殑鎺掑簭嬈″簭銆備緥濡傦紝鍦ㄥ墠闈㈡彁鍒扮殑Buffer綾諱腑錛屾垜浠彲浠ュ畾涔夎嚜宸辯殑姣旇緝絎︼紝鐢ㄨ嚜瀹氫箟鐨勬瘮杈冪鏉ュ喅瀹氬厓绱犵殑鎺掑簭嬈″簭錛岃屼笉鏄噰鐢ㄥ厓绱犵殑鑷劧鎺掑簭嬈″簭銆備笅闈㈡潵鐪嬬湅鍏蜂綋鐨勫疄鐜扮粡榪囥?// 鈥?
// 鈶?鍒涘緩涓涓狟inaryHeap綾伙紝浣嗚繖涓嬈″弬鏁頒腑
// 鎸囧畾NullComparator銆侼ullComparator姣旇緝
// null涓庡叾浠栧璞★紝鏍規嵁nullsAreHigh鏍囪鏉?
// 鍒ゆ柇null鍊兼瘮鍏朵粬瀵硅薄澶ц繕鏄皬錛氬鏋?
// nullsAreHigh鐨勫兼槸false錛屽垯璁や負null瑕佹瘮
// 鍏朵粬瀵硅薄灝忋?
BinaryHeap heap2 = new BinaryHeap
(new NullComparator(false));
// 鈥?
// 鈶?灝嗕竴浜涙暟鎹紙鍖呮嫭鍑犱釜null鍊鹼級鍔犲叆heap錛?
heap2.add(null);
heap2.add(new Integer("6"));
heap2.add(new Integer("-6"));
heap2.add(null);
// 鈥?
// 鈶?鏈鍚庡垹闄や竴涓厓绱狅紝Bag鍖呭惈鐨刵ull灝嗗噺灝?
// 涓涓紝鍥犱負null瑕佹瘮鍏朵粬瀵硅薄灝忋?
heap2.remove();
銆銆鏈夊叧鍏朵粬綾籆ommons緇勪歡鐨勪粙緇嶅氨鍒拌繖閲岀粨鏉熴傚鏋滀綘鎯充簡瑙f洿澶氱粏鑺備俊鎭紝璇峰弬瑙丄PI鏂囨。錛屾渶濂藉啀鐪嬬湅榪欎簺鍖呯殑婧愪唬鐮併? 銆銆涓夈乄eb綾?/b> 銆銆Web綾葷殑緇勪歡鐢ㄦ潵鎵ц涓嶹eb鐩稿叧鐨勪換鍔°? 銆銆3.1 FileUpload 銆銆鈻?姒傚喌錛氫竴涓彲浠ョ洿鎺ヤ嬌鐢ㄧ殑鏂囦歡涓婅澆緇勪歡銆? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉銆傜敱浜庤繖涓粍浠跺皻鏈寮忓彂甯冿紝浠婂勾浜屾湀鍙戝竷鐨凚eta鐗堝張鏈夎澶欱UG錛屾墍浠ュ緩璁粠nightly builds 涓嬭澆鏈鏂扮殑鐗堟湰銆? 銆銆鈻?浣曟椂閫傜敤錛氬綋浣犳兂瑕佸湪Java鏈嶅姟鍣ㄧ幆澧冧腑鍔犲叆涓涓槗鐢ㄣ侀珮鎬ц兘鐨勬枃浠朵笂杞界粍浠朵箣鏃躲? 銆銆鈻?紺轟緥搴旂敤錛歠ileuploaddemo.jsp錛宖ileuploaddemo.htm錛屽拰msg.jsp銆傝姹傛湇鍔″櫒绔簲鐢ㄧ洰褰曠殑WEB-INF/lib涓嬮潰鏈塩ommons-fileupload-1.0-dev.jar銆? 銆銆鈻?璇存槑錛? 銆銆FileUpload緇勪歡瑙e喅浜嗗父瑙佺殑鏂囦歡涓婅澆闂銆傚畠鎻愪緵浜嗕竴涓槗鐢ㄧ殑鎺ュ彛鏉ョ鐞嗕笂杞藉埌鏈嶅姟鍣ㄧ殑鏂囦歡錛屽彲鐢ㄤ簬JSP鍜孲ervlet涔嬩腑銆侳ileUpload緇勪歡閬典粠RFC1867錛屽畠鍒嗘瀽杈撳叆璇鋒眰錛屽悜搴旂敤紼嬪簭鎻愪緵涓緋誨垪涓婅澆鍒版湇鍔″櫒鐨勬枃浠躲備笂杞界殑鏂囦歡鍙互淇濈暀鍦ㄥ唴瀛樹腑錛屼篃鍙互鏀懼叆涓涓復鏃朵綅緗紙鍏佽閰嶇疆涓涓〃紺烘枃浠跺ぇ灝忕殑鍙傛暟錛屽鏋滀笂杞界殑鏂囦歡瓚呰繃浜嗚鍙傛暟鎸囧畾鐨勫ぇ灝忥紝鍒欐妸鏂囦歡鍐欏叆涓涓復鏃朵綅緗級銆傚彟澶栬繕鏈変竴浜涘弬鏁板彲渚涢厤緗紝鍖呮嫭鍙帴鍙楃殑鏈澶ф枃浠躲佷復鏃舵枃浠剁殑浣嶇疆絳夈? 銆銆涓嬮潰浠嬬粛涓涓嬩嬌鐢‵ileUpload緇勪歡鐨勬楠ゃ? 銆銆棣栧厛鍒涘緩涓涓狧TML欏甸潰銆傛敞鎰忥紝鍑℃槸瑕佷笂杞芥枃浠剁殑琛ㄥ崟閮藉繀欏昏緗甧nctype灞炴э紝涓斿睘鎬х殑鍊煎繀欏繪槸multipart/form-data錛屽悓鏃惰姹傛柟娉曞繀欏繪槸POST銆備笅闈㈢殑琛ㄥ崟闄や簡涓婅澆涓や釜鏂囦歡錛屽彟澶栬繕鏈変竴涓櫘閫氱殑鏂囨湰杈撳叆妗嗭細 銆銆鎺ヤ笅鏉ュ垱寤篔SP欏甸潰銆?// 鈥?
// 鈶?媯鏌ヨ緭鍏ヨ姹傛槸鍚︿負multipart鐨勮〃鍗曟暟鎹?
boolean isMultipart = FileUpload.
isMultipartContent(request);
// 鈥?
// 鈶?涓鴻璇鋒眰鍒涘緩涓涓彞鏌勶紝閫氳繃瀹冩潵瑙f瀽璇鋒眰銆傛墽琛?
// 瑙f瀽鍚庯紝鎵鏈夌殑琛ㄥ崟欏圭洰閮戒繚瀛樺湪涓涓狶ist涓?
DiskFileUpload upload = new DiskFileUpload();
// 閫氳繃鍙ユ焺瑙f瀽璇鋒眰錛岃В鏋愬緱鍒扮殑欏圭洰淇濆瓨鍦ㄤ竴涓狶ist涓?
List items = upload.parseRequest(request);
// 鈥?
// 鈶?閫氳繃寰幆渚濇鑾峰緱List閲岄潰鐨勬枃浠墮」鐩傝鍖哄垎琛ㄧず
// 鏂囦歡鐨勯」鐩拰鏅氱殑琛ㄥ崟杈撳叆欏圭洰錛屼嬌鐢╥sFormField()
// 鏂規硶銆傛牴鎹鐞嗚姹傜殑瑕佹眰錛屾垜浠彲浠ヤ繚瀛樹笂杞界殑鏂?
// 浠訛紝鎴栬呬竴涓瓧鑺備竴涓瓧鑺傚湴澶勭悊鏂囦歡鍐呭錛屾垨鑰呮墦
// 寮鏂囦歡鐨勮緭鍏ユ祦銆?
Iterator itr = items.iterator();
while(itr.hasNext()) {
FileItem item = (FileItem) itr.next();
// 媯鏌ュ綋鍓嶇殑欏圭洰鏄櫘閫氱殑琛ㄥ崟鍏冪礌錛岃繕鏄竴涓笂杞界殑鏂囦歡
if(item.isFormField()) {
// 鑾峰緱琛ㄥ崟鍩熺殑鍚嶅瓧
String fieldName = item.getFieldName();
// 濡傛灉琛ㄥ崟鍩熺殑鍚嶅瓧鏄痭ame鈥?
if(fieldName.equals("name"))
request.setAttribute("msg",
"Thank You: " + item.getString());
} else {
// 璇ラ」鐩槸涓涓笂杞界殑鏂囦歡錛屾妸瀹冧繚瀛樺埌紓佺洏銆?
// 娉ㄦ剰item.getName()
// 浼氳繑鍥炰笂杞芥枃浠跺湪瀹㈡埛绔殑瀹屾暣璺緞鍚嶇О錛岃繖浼間箮鏄竴涓狟UG銆?
// 涓鴻В鍐寵繖涓棶棰橈紝榪欓噷浣跨敤浜唂ullFile.getName()銆?
File fullFile = new File(item.getName());
File savedFile = new File
(getServletContext().getRealPath("/"),
fullFile.getName());
item.write(savedFile);
}
}
銆銆鎴戜滑鍙互閫氳繃涓婅澆鍙ユ焺鐨剈pload.setSizeMax鏉ラ檺鍒朵笂杞芥枃浠剁殑澶у皬銆傚綋涓婅澆鏂囦歡鐨勫ぇ灝忚秴榪囧厑璁哥殑鍊兼椂錛岀▼搴忓皢閬囧埌寮傚父銆傚湪涓婇潰鐨勪緥瀛愪腑錛屾枃浠跺ぇ灝忕殑闄愬埗鍊兼槸-1錛岃〃紺哄厑璁鎬笂杞戒換鎰忓ぇ灝忕殑鏂囦歡銆? 銆銆榪樻湁鍏朵粬涓浜涚暐鏈夊彉鍖栫殑浣跨敤褰㈠紡錛屾濡傚墠闈㈡墍鎸囧嚭鐨勶紝鎴戜滑鍙互鍦ㄤ笂杞界殑鏂囦歡涓婃墦寮涓涓緭鍏ユ祦錛屾垨鑰呰瀹冧滑椹葷暀鍦ㄥ唴瀛樹腑鐩磋嚦絀洪棿鍗犵敤杈懼埌涓瀹氱殑闄愬埗鍊鹼紝鎴栬呭湪鍒ゆ柇鏂囦歡綾誨瀷鐨勫熀紜涓婏紝浠tring鎴朆yte鏁扮粍鐨勫艦寮忚幏鍙栧叾鍐呭錛屾垨鑰呯洿鎺ュ垹闄ゆ枃浠躲傝繖涓鍒囬兘鍙浣跨敤FileItem綾繪彁渚涚殑鏂規硶灝卞彲浠ユ柟渚垮湴鍋氬埌錛圖efaultFileItem鏄疐ileItem鐨勪竴涓疄鐜幫級銆?/font> 銆銆3.2 HttpClient 銆銆鈻?姒傚喌錛氳繖涓狝PI鎵╁睍浜唈ava.net鍖咃紝鎻愪緵浜嗘ā鎷熸祻瑙堝櫒鐨勫姛鑳姐? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆? 銆銆鈻?浣曟椂閫傜敤錛氬綋浣犺鏋勯燱eb嫻忚鍣ㄧ殑鍔熻兘錛涘綋浣犵殑搴旂敤闇瑕佷竴縐嶉珮鏁堢殑鍔炴硶榪涜HTTP/HTTPS閫氫俊鏃躲? 銆銆鈻?紺轟緥搴旂敤錛欻ttpClientDemo.java銆傝姹侰LASSPATH涓湁commons-httpclient.jar錛宑ommon-logging.jar銆傝姹備嬌鐢↗DK 1.4鎴栨洿楂樼増鏈? 銆銆鈻?璇存槑錛? 銆銆HttpClient鎵╁睍鍜屽寮轟簡鏍囧噯java.net鍖咃紝鏄竴涓唴瀹瑰箍娉涚殑浠g爜搴擄紝鍔熻兘鏋佸叾涓板瘜錛岃兘澶熸瀯閫犲嚭鍚勭浣跨敤HTTP鍗忚鐨勫垎甯冨紡搴旂敤錛屾垨鑰呬篃鍙互宓屽叆鍒扮幇鏈夊簲鐢紝涓哄簲鐢ㄥ鍔犺闂瓾TTP鍗忚鐨勮兘鍔涖傚湪Commons紼沖畾鐗堜腑錛孒ttpClient鐨勬枃妗d技涔庤姣斿叾浠栧寘鏇村畬鍠勪竴浜涳紝鑰屼笖榪樺甫鏈夊嚑涓疄渚嬨備笅闈㈡垜浠氳繃涓涓畝鍗曠殑渚嬪瓙鏉ヤ簡瑙e浣曟彁鍙栦竴涓猈eb欏甸潰錛孒ttpClient鏂囨。涓篃鏈変竴涓被浼肩殑渚嬪瓙錛屾垜浠皢鎵╁厖閭d釜渚嬪瓙浣垮叾鏀寔SSL銆傛敞鎰忔湰渚嬮渶瑕丣DK 1.4鏀寔錛屽洜涓哄畠瑕佺敤鍒癑ava Secure Socket Connection搴擄紝鑰岃繖涓簱鍙湁JDK 1.4鍙婃洿楂樼殑鐗堟湰鎵嶆彁渚涖? 銆銆鈶?棣栧厛紜畾涓涓彲浠ラ氳繃HTTPS涓嬭澆鐨勯〉闈紝鏈緥浣跨敤鐨勬槸https://www.paypal.com/銆傚悓鏃剁‘淇?JAVA_HOME%/jre/lib/security/java.security鏂囦歡鍖呭惈浜嗕笅闈㈣繖琛屼唬鐮侊細security.provider.2=com.sun.net.ssl.internal.ssl.Provider銆? 銆銆闄や簡榪欎簺璁劇疆涔嬪錛孒TTPS榪炴帴鐨勫鐞嗘柟寮忔病鏈夊叾浠栫壒鍒殑鍦版柟--鑷沖皯瀵逛簬鏈緥鏉ヨ濡傛銆備笉榪囷紝濡傛灉榪滅▼緗戠珯浣跨敤鐨勬牴璇佷功涓嶈浣犱嬌鐢ㄧ殑Java璁ゅ彲錛屽垯棣栧厛蹇呴』瀵煎叆瀹冪殑璇佷功銆? 銆銆鈶?鍒涘緩涓涓狧ttpClient鐨勫疄渚嬨侶ttpClient綾誨彲浠ョ湅鎴愭槸搴旂敤鐨勪富椹卞姩紼嬪簭錛屾墍鏈夐拡瀵圭綉緇滅殑鍔熻兘閮戒緷璧栦簬瀹冦侶ttpClient綾婚渶瑕佷竴涓狢onnection Manager鏉ョ鐞嗚繛鎺ャ侶ttpConnectionManager鍏佽鎴戜滑鍒涘緩鑷繁鐨勮繛鎺ョ鐞嗗櫒錛屾垨鑰咃紝鎴戜滑涔熷彲浠ョ洿鎺ヤ嬌鐢ㄥ唴寤虹殑SimpleHttpConnectionManager鎴朚ultiThreadedHttpConnectionManager綾匯傚鏋滃湪鍒涘緩HttpClient鏃舵病鏈夋寚瀹氳繛鎺ョ鐞嗗櫒錛孒ttpClient榛樿浣跨敤SimpleHttpConnectionManager銆?// 鍒涘緩涓涓狧ttpClient鐨勫疄渚?
HttpClient client = new HttpClient();
銆銆鈶?鍒涘緩涓涓狧ttpMethod鐨勫疄渚嬶紝鍗崇‘瀹氫笌榪滅▼鏈嶅姟鍣ㄧ殑閫氫俊瑕侀噰鐢ㄥ摢縐嶄紶杈撴柟寮忥紝HTTP鍏佽閲囩敤鐨勪紶杈撴柟寮忓寘鎷細GET錛孭OST錛孭UT錛孌ELETE錛孒EAD錛孫PTIONS錛屼互鍙奣RACE銆傝繖浜涗紶杈撴柟寮忓垎鍒綔涓轟竴涓嫭绔嬬殑綾誨疄鐜幫紝浣嗘墍鏈夎繖浜涚被閮藉疄鐜癏ttpMethod鎺ュ彛銆傚湪鏈緥涓紝鎴戜滑浣跨敤鐨勬槸GetMethod錛屽垱寤篏etMethod瀹炰緥鏃跺湪鍙傛暟涓寚瀹氭垜浠兂瑕丟ET鐨刄RL銆?// 鍒涘緩涓涓狧ttpMethod鐨勫疄渚?
HttpMethod method = new GetMethod(url);
銆銆鈶?鎵цHttpMethod瀹氫箟鐨勬彁鍙栨搷浣溿傛墽琛屽畬姣曞悗錛宔xecuteMethod鏂規硶灝嗚繑鍥炶繙紼嬫湇鍔″櫒鎶ュ憡鐨勭姸鎬佷唬鐮併傛敞鎰廵xecuteMethod灞炰簬HttpClient錛岃屼笉鏄疕ttpMethod銆?// 鎵цHttpMethod瀹氫箟鐨勬彁鍙栨搷浣?
statusCode = client.executeMethod(method);
銆銆鈶?璇誨彇鏈嶅姟鍣ㄨ繑鍥炵殑搴旂瓟銆傚鏋滃墠闈㈢殑榪炴帴鎿嶄綔澶辮觸錛岀▼搴忓皢閬囧埌HttpException鎴朓OException錛屽叾涓璉OException涓鑸剰鍛崇潃緗戠粶鍑洪敊錛岀戶緇皾璇曚篃涓嶅お鍙兘鑾峰緱鎴愬姛銆傛湇鍔″櫒榪斿洖鐨勫簲絳斿彲浠ユ寜鐓у縐嶆柟寮忚鍙栵紝渚嬪浣滀負涓涓瓧鑺傛暟緇勶紝浣滀負涓涓緭鍏ユ祦錛屾垨鑰呬綔涓轟竴涓猄tring銆傝幏寰楁湇鍔″櫒榪斿洖鐨勫簲絳斿悗錛屾垜浠氨鍙互鎸夌収鑷繁鐨勯渶瑕佷換鎰忓緗畠浜嗐?byte[] responseBody = method.getResponseBody();
銆銆鈶?鏈鍚庤鍋氱殑灝辨槸閲婃斁榪炴帴銆?method.releaseConnection();
銆銆浠ヤ笂鍙槸闈炲父綆鍗曞湴浠嬬粛浜嗕竴涓婬ttpClient搴擄紝HttpClient瀹為檯鐨勫姛鑳借姣旀湰鏂囦粙緇嶇殑涓板瘜寰楀錛屼笉浠呭仴澹屼笖楂樻晥錛岃鍙傞槄API鏂囨。浜嗚В璇︽儏銆? 銆銆3.3 Net 銆銆鈻?姒傚喌錛氫竴涓敤浜庢搷浣淚nternet鍩虹鍗忚鐨勫簳灞侫PI銆? 銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆? 銆銆鈻?浣曟椂閫傜敤錛氬綋浣犳兂瑕佽闂悇縐岻nternet搴曞眰鍗忚涔嬫椂錛團inger錛學hois錛孴FTP錛孴elnet錛孭OP3錛孎TP錛孨NTP錛屼互鍙奡MTP錛夈? 銆銆鈻?紺轟緥搴旂敤錛歂etDemo.java銆傝姹侰LASSPATH涓寘鍚玞ommons-net-1.0.0.jar銆? 銆銆鈻?璇存槑錛? 銆銆Net鍖呮槸涓涓己澶с佷笓涓氱殑綾誨簱錛岀被搴撻噷鐨勭被鏈鍒濆睘浜庝竴涓彨鍋歂etComponents鐨勫晢涓氫駭鍝併? 銆銆Net鍖呬笉浠呮敮鎸佸鍚勭浣庡眰嬈″崗璁殑璁塊棶錛岃屼笖榪樻彁渚涗簡涓涓珮灞傜殑鎶借薄銆傚ぇ澶氭暟鎯呭喌涓嬶紝Net鍖呮彁渚涚殑鎶借薄宸茶兘婊¤凍涓鑸渶瑕侊紝瀹冧嬌寰楀紑鍙戣呬笉鍐嶉渶瑕佺洿鎺ラ潰瀵瑰悇縐嶅崗璁殑Socket綰х殑浣庡眰鍛戒護銆備嬌鐢ㄩ珮灞傛娊璞″茍涓嶅噺灝戜換浣曞姛鑳斤紝Net API鍦ㄨ繖鏂歸潰鍋氬緱寰堝嚭鑹詫紝鏃㈡彁渚涗簡瓚沖鐨勫姛鑳斤紝鍙堜笉鑷充簬鍦ㄧ壒鑹叉柟闈綔榪囧鐨勫Ε鍗忋? 銆銆SocketClient鏄敮鎸佹墍鏈夊崗璁殑鍩虹綾伙紝瀹冩槸涓涓娊璞$被錛岃仛鍚堜簡鍚勭鍗忚閮介渶瑕佺殑鍏敤鍔熻兘銆傚悇縐嶄笉鍚屽崗璁殑浣跨敤榪囩▼鍏跺疄寰堢浉浼鹼紝棣栧厛鍒╃敤connect鏂規硶寤虹珛涓涓寚鍚戣繙紼嬫湇鍔″櫒鐨勮繛鎺ワ紝鎵ц蹇呰鐨勬搷浣滐紝鏈鍚庣粓姝笌鏈嶅姟鍣ㄧ殑榪炴帴銆備笅闈㈤氳繃瀹炰緥浠嬬粛鍏蜂綋鐨勪嬌鐢ㄦ楠ゃ?// 鈥?
// 鈶?鍒涘緩涓涓鎴風銆傛垜浠皢鐢∟NTPClient
//銆銆浠庢柊闂繪湇鍔″櫒涓嬭澆鏂伴椈緇勬竻鍗曘?
client = new NNTPClient();
// 鈥?
// 鈶?鍒╃敤鍓嶉潰鍒涘緩鐨勫鎴風榪炴帴鍒版柊闂繪湇鍔″櫒銆?
//銆銆榪欓噷閫夌敤鐨勬槸涓涓柊闂葷粍杈冨皯鐨勬湇鍔″櫒銆?
client.connect("aurelia.deine.net");
// 鈥?
// 鈶?鎻愬彇鏂伴椈緇勬竻鍗曘備笅闈㈢殑鍛戒護灝嗚繑鍥炰竴涓?
//銆銆NewsGroupInfo瀵硅薄鐨勬暟緇勩傚鏋滄寚瀹氱殑鏈?
//銆銆鍔″櫒涓婁笉鍖呭惈鏂伴椈緇勶紝榪斿洖鐨勬暟緇勫皢鏄┖鐨勶紝
//銆銆濡傛灉閬囧埌浜嗛敊璇紝鍒欒繑鍥炲兼槸null銆?
list = client.listNewsgroups();
//...
// 鈶?鏈鍚庣粓姝笌鏈嶅姟鍣ㄧ殑榪炴帴銆?
if (client.isConnected())
client.disconnect();
銆銆蹇呴』璇存槑鐨勬槸錛宭istNewsgroups鍛戒護鍙兘闇瑕佽緝闀跨殑鏃墮棿鎵嶈兘榪斿洖錛屼竴鏂歸潰鏄洜涓虹綉緇滈熷害鐨勫獎鍝嶏紝鍙﹀涔熷彲鑳芥槸鐢變簬鏂伴椈緇勬竻鍗曞線寰鏄緢搴炲ぇ鐨勩侼ewsGroupInfo瀵硅薄鍖呭惈鏈夊叧鏂伴椈緇勭殑璇︾粏淇℃伅錛屽茍鎻愪緵浜嗕竴浜涙搷浣滄柊闂葷粍鐨勫懡浠わ紝姣斿鎻愬彇鏂囩珷鎬繪暟銆佹渶鍚庡彂甯冪殑鏂囩珷銆佸彂甯冩枃绔犵殑鏉冮檺錛岀瓑絳夈? 銆銆鍏朵粬瀹㈡埛绔紝渚嬪FingerClient銆丳OP3Client銆乀elnetClient絳夛紝鐢ㄦ硶涔熷樊涓嶅銆? 銆銆緇撴潫璇細鏈夊叧Web鐩稿叧綾誨拰鍏朵粬綾葷殑浠嬬粛灝卞埌姝ょ粨鏉熴傚湪涓嬩竴綃囨枃绔犱腑錛屾垜浠皢鎺㈣XML綾誨拰鍖呰綾伙紝鏈鍚庝竴綃囨枃绔犲垯浠嬬粛宸ュ叿綾匯? 銆銆甯屾湜璇昏呮湁鍏磋叮璇曡瘯鏈枃鎻愪緵鐨勭▼搴忓疄渚嬨傚緢澶氭椂鍊橨akarta Commons緇欎漢浠ユ販涔辯殑鎰熻錛屽笇鏈涙湰鏂囦嬌浣犲姞娣變簡瀵笿akarta Commons浜嗚В錛屾垨鑰呰嚦灝戝紩璧蜂簡浣犲Commons瀛愰」鐩互鍙婂畠鎻愪緵鐨勫悇縐嶅疄鐢ˋPI鍜屽簱鐨勫叴瓚c? 璇蜂粠榪欓噷涓嬭澆鏈枃浠g爜錛?a target="_blank">JakartaCommons1_code.zip ]]>
主站蜘蛛池模板:
亚洲大成色www永久网站 |
国产伦精品一区二区三区免费迷 |
亚洲日本韩国在线 |
国产亚洲精品仙踪林在线播放 |
最近中文字幕无吗高清免费视频 |
亚洲欧洲中文日产 |
182tv免费观看在线视频 |
亚洲日产2021三区 |
无码人妻一区二区三区免费手机 |
亚洲av日韩av综合 |
日韩成全视频观看免费观看高清 |
国产精品亚洲专区无码WEB |
亚洲AV成人潮喷综合网 |
国产国产人免费人成成免视频 |
在线播放亚洲第一字幕 |
日韩精品在线免费观看 |
亚洲高清中文字幕综合网 |
青娱乐免费视频在线观看 |
亚洲女女女同性video |
亚洲国产成人精品无码久久久久久综合
|
狠狠色婷婷狠狠狠亚洲综合 |
国产性生大片免费观看性
|
中中文字幕亚洲无线码 |
精品国产免费观看一区 |
又粗又长又爽又长黄免费视频 |
国产亚洲成AV人片在线观黄桃
|
亚洲国产综合自在线另类 |
日本免费电影一区 |
中文字幕乱码系列免费 |
亚洲午夜精品国产电影在线观看 |
免费看美女被靠到爽的视频 |
国产精品福利片免费看 |
亚洲成人网在线观看 |
在线观看免费精品国产 |
永久免费av无码入口国语片 |
亚洲av乱码一区二区三区 |
亚洲日韩在线第一页 |
曰批全过程免费视频网址 |
直接进入免费看黄的网站 |
亚洲人成亚洲精品 |
四虎1515hm免费国产 |