锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import聽java.util.regex.Matcher;
import聽java.util.regex.Pattern;
import聽org.junit.Assert;
import聽org.junit.Test;
public聽class聽RegexUnit聽{
聽聽聽聽@Test
聽聽聽聽/**
聽聽聽聽聽*聽<p>鍚戝墠\鍚戝悗鏌ユ壘</p>
聽聽聽聽聽*/
聽聽聽聽public聽void聽unit9()throws聽Exception{
聽聽聽聽聽聽聽聽String聽testStr聽=聽"http://www.google.com";
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽/*聽涓鑸煡鎵?br />聽聽聽聽聽聽聽聽聽*聽.+(:)聽鏌ヨ鍑虹粨鏋滃寘鍚?
聽聽聽聽聽聽聽聽聽*/
聽聽聽聽聽聽聽聽Pattern聽pattern聽=聽Pattern.compile(".+(:)");聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽Matcher聽matcher聽=聽聽pattern.matcher(testStr);
聽聽聽聽聽聽聽聽聽聽聽聽Assert.assertTrue("閿欒錛毬犳煡鎵懼嚭緇撴灉閫氳繃聽.+(:)聽姝egex娌℃湁鍖呭惈聽:聽",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽matcher.find()聽&&聽matcher.group().equals("http:")聽);
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽/*聽聽鍚戝墠鏌ユ壘
聽聽聽聽聽聽聽聽聽*聽聽.+(?=:)聽鏌ヨ緇撴灉涓嶅寘鍚?
聽聽聽聽聽聽聽聽聽*/
聽聽聽聽聽聽聽聽Pattern聽pattern2聽=聽Pattern.compile(".+(?=:)");
聽聽聽聽聽聽聽聽Matcher聽matcher2聽=聽pattern2.matcher(testStr);
聽聽聽聽聽聽聽聽聽聽聽聽Assert.assertTrue("閿欒錛毬犳煡鎵懼嚭緇撴灉閫氳繃聽.+(?=:)聽姝egex鏈夊寘鍚?聽",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽matcher2.find()&&聽matcher2.group().equals("http"));
聽聽聽聽聽聽聽聽/*聽鍚戝悗鏌ユ壘
聽聽聽聽聽聽聽聽聽*聽(?<=:).+
聽聽聽聽聽聽聽聽聽*/
聽聽聽聽聽聽聽聽Pattern聽pattern3聽=聽Pattern.compile("(?<=://).+");
聽聽聽聽聽聽聽聽Matcher聽matcher3聽=聽pattern3.matcher(testStr);
聽聽聽聽聽聽聽聽聽聽聽聽Assert.assertTrue("閿欒錛氭煡鎵懼嚭緇撴灉鍖呭惈聽http://聽涓嶅悜鍚庢煡璇?/span>",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽matcher3.find()&&聽matcher3.group().equals("www.google.com")聽);
聽聽聽聽}
聽聽聽聽@Test
聽聽聽聽/**聽鍥炴湐搴旂敤聽
聽聽聽聽聽*聽聽鏌ヨ鍥炴湐銆佸洖鏈旀浛鎹€佸洖鏈斿ぇ灝忓啓鏇挎崲
聽聽聽聽聽*/
聽聽聽聽public聽void聽unit8()throws聽Exception{
聽聽聽聽聽聽聽聽String聽testStr聽=聽"this聽is聽a聽block聽of聽of聽test,"+
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽"聽several聽words聽here聽are聽are聽"聽+
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽"聽repeated聽,聽and聽and聽they聽should聽not聽be.聽";
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽Pattern聽pattern聽=聽Pattern.compile("[聽]+(\\w+)[聽]+\\1");
聽聽聽聽聽聽聽聽Matcher聽matcher聽=聽pattern.matcher(testStr);
聽聽聽聽聽聽聽聽//鏌ヨ緇撴灉聽are聽are聽
聽聽聽聽聽聽聽聽Assert.assertTrue("閿欒錛歳egex聽涓嶅尮閰嵚?/span>",聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽matcher.find()&&matcher.group().split("聽").length>=2聽);
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽while(聽matcher.find()聽){
聽聽聽聽聽聽聽聽聽聽聽聽Assert.assertTrue("閿欒錛歳egex聽涓嶅尮閰嵚?/span>",聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽matcher.group().split("聽").length>=2聽);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽//鏇挎崲
聽聽聽聽聽聽聽聽String聽testStr2s聽=聽"313-555-1234";
聽聽聽聽聽聽聽聽Pattern聽pattern2聽=聽Pattern.compile("(\\d{3})(-)(\\d{3})(-)(\\d{4})");
聽聽聽聽聽聽聽聽Matcher聽mtmp聽=聽聽pattern2.matcher(testStr2s);
聽聽聽聽聽聽聽聽Assert.assertTrue("閿欒錛氭病鏈夋煡鏇挎崲",
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽mtmp.find()聽&&聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽mtmp.replaceAll("($1)聽$3-$5").equals("(313)聽555-1234")聽);
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽/*澶у皬鍐欐浛鎹?java聽涓嶈兘鎴愬姛)
聽聽聽聽聽聽聽聽聽*聽聽\E聽緇撴潫聽\L聽鎴柭燶U杞崲
聽聽聽聽聽聽聽聽聽*聽聽\l聽聽\L聽鎶婁笅涓涓瓧絎?涓?鎹負灝忓啓
聽聽聽聽聽聽聽聽聽*聽聽\聽u聽聽\U聽鎶婁笅涓涓瓧絎?涓?杞崲涓哄ぇ鍐櫬?br />聽聽聽聽聽聽聽聽聽*/
聽聽聽聽聽聽聽聽String聽testStr3聽=聽"tt:google:xx";
聽聽聽聽聽聽聽聽Pattern聽pattern3聽=聽Pattern.compile("(?<=:)(.+)(?=:)");
聽聽聽聽聽聽聽聽Matcher聽matcher2聽=聽pattern3.matcher(testStr3);
聽聽聽聽聽聽聽聽if(聽matcher2.find())
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(聽matcher2.group()聽)聽;
聽聽聽聽}
聽聽聽聽
聽聽聽聽
}
]]>
]]>
聽聽聽聽鏂囩珷璺緞錛?a id="n3dz" >http://www.chinaitpower.com/A200508/2005-08-07/183934.html
聽聽聽聽鏉冮檺璁捐閫氬父鍖呮嫭鏁版嵁搴撹璁°佸簲鐢ㄧ▼搴忔帴鍙?API)璁捐銆佺▼搴忓疄鐜頒笁涓儴鍒嗐?/p>
聽聽聽聽鏉冮檺鍒嗙被錛?/font>
聽聽聽聽聽聽聽聽棣栧厛鏄?strong id="a-fu">閽堝鏁版嵁瀛樺彇鐨勬潈闄愶紝閫氬父鏈夊綍鍏ャ佹祻瑙堛佷慨鏀廣佸垹闄ゅ洓縐嶃?/p>
聽聽聽聽聽聽聽聽鍏舵鏄?strong id="obi3">鍔熻兘錛屽畠鍙互鍖呮嫭渚嬪緇熻絳夋墍鏈夐潪鐩存帴鏁版嵁瀛樺彇鎿嶄綔錛屽彟澶栵紝鎴戜滑榪樺彲鑳藉涓浜涘叧閿暟鎹〃鏌愪簺瀛楁鐨勫瓨鍙栬繘琛岄檺鍒躲?/p>
聽
聽
鏉冮檺琛ㄥ強鐩稿叧鍐呭澶т綋鍙互鐢ㄥ叚涓〃鏉ユ弿榪幫紝濡備笅錛毬?br id="f:vt" />聽聽聽聽1 鎷ユ湁鏉冮檺瑙掕壊錛堝嵆鐢ㄦ埛緇勶級錛氬叿浣?strong id="m2-j">鎷ユ湁鏉冮檺鎻忚堪瀹炰綋銆?/p>
聽聽聽聽2 鐢ㄦ埛琛?/font>錛氱敤鎴風殑鎻忚堪錛屽叾瀹冿紙濡傚湴鍧銆佺數璇濈瓑淇℃伅錛夛紱聽 聽聽聽聽4 鏉冮檺鍒楄〃錛氱▼搴?strong id="ohbe">鎵鏈?/strong>鏉冮檺鍒楄〃銆傝琛ㄨ褰曟墍鏈夎鍔犱互鎺у埗鐨勬潈闄愶紝濡傚綍鍏ャ佷慨鏀廣佸垹闄ゃ佹墽琛岀瓑錛浡?br id="garo" />聽聽聽聽5 鏉冮檺-瑙掕壊-鐢ㄦ埛瀵瑰簲琛?/font>錛?strong id="ome4">鏉冮檺瀵瑰簲瑙掕壊(澶氬澶氬叧緋?/font>)鍐嶇敱4琛ㄥ叧緋誨埌鐢ㄦ埛銆?/p>
聽
鍦ㄦ帰璁ㄦ枃涓殑絎?鏉★紝鎴戞庝箞閮戒笉澶悊瑙o紵鏈涘ぇ瀹舵帰璁ㄣ傚弽鍚戞潈闄愬悧錛熼偅鎬庝箞鍜岀郴緇熶腑鐨勬嫢鏈変竴璧鋒弿榪幫紵
聽
涓嬮潰鎻愬嚭涓浜涜嚜宸辯殑瑙佽В錛?/strong>
聽聽聽聽
1 鐢ㄦ埛琛細鐢ㄦ埛鐨勬弿榪幫紝鍏跺畠錛堝鍦板潃銆佺數璇濈瓑淇℃伅錛夛紱聽
聽聽 2 鏉冮檺鍒楄〃錛氱▼搴?strong id="n-8.">鎵鏈?font id="r7ps" color="#660000">鏉冮檺鍒楄〃銆傝琛ㄨ褰曟墍鏈夎鍔犱互鎺у埗鐨勬潈闄愶紝濡傚綍鍏ャ佷慨鏀廣佸垹闄ゃ佹墽琛岀瓑錛浡?br id="xst3" />聽聽聽3 鏉冮檺鏍戯紙妯$硦鐪嬫垚瑙掕壊錛屼絾鏈変簺涓嶅悓銆傛爲鎬х粨鏋勶紝緇撴瀯鏁版嵁搴撲腑琛ㄥ閿嚜宸憋級錛氬瀛愭帴鐐圭戶鎵跨埗浜叉帴鐐瑰叏閮ㄦ潈闄愶紝騫跺湪嬈′笂鎵╁厖鍜屽垹鍑忔潈闄愬緩绔嬭嚜宸卞垎鏀?/font>
聽聽聽4 鏉冮檺鍒楄〃-鏉冮檺鏍戯細錛堝瀵瑰鍏崇郴錛夌敤浜庢弿榪版鏉冮檺鏍戞帴鐐?/font>瀵?font id="tu_b" color="#990000">鐖朵翰鎺ョ偣鏉冮檺緇ф壙涓?/strong> 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鏈〃涓敤涓鍒楁灇涓懼垪鐢ㄤ簬琛ㄧず鏈邯褰曟槸娣誨姞鎴栧垹鍑忔潈闄愩?/p>
聽聽聽5 鐢ㄦ埛-鏉冮檺鏍戯細鏉冮檺鏍戞帴鐐?/strong>瀵瑰簲鐢ㄦ埛錛堝瀵逛竴錛夊叧緋匯?/p>
鎰熻鑷繁鐨勮繖縐嶆鏋訛紝鑳藉緢濂界殑鎵╁厖錛堝湪鏌愭帴鐐逛笅澧烇紝鍒犳煇鏉冮檺鎴栫洿鎺ユ壘鍒?strong id="dwf0">鏈鍚戣繎鐨勪竴涓潈闄愭爲鎺ョ偣騫剁戶鎵?/strong>錛壜犅?/p>
澶у澶氳璇磋嚜宸辯殑瑙佽В錛屽拰瀵規瘮涓嬭繖涓や釜妗嗘灦鐨勪竴浜涗紭緙虹偣鎶娿傛湰浜洪殢鏃舵伃鍚侴_G
涓?008-4-7 22:50鍖椾含 google doc 鍘熺ǹ錛毬?a class="tabcontent" id="publishedDocumentUrl" target="_blank">http://docs.google.com/Doc?id=dkvfctc_16hgvfkbfs 聽 聽聽聽 聽聽聽 HashMap 綾繪病鏈夊垎綾繪垨鑰呮帓搴忋傚畠鍏佽涓涓?/span> null 閿拰澶氫釜 null 鍊箋?/span> 銆銆Hashtable 綾諱技浜?/span> HashMap錛屼絾鏄笉鍏佽 null 閿拰 null 鍊箋傚畠涔熸瘮 HashMap 鎱紝鍥犱負瀹冩槸鍚屾鐨勩?/span> 6. GC 聽聽聽 聽聽聽 System.gc() 聽聽聽 聽聽聽 Runtime.getRuntime().gc() 7.閲嶅啓Overriding鍜岄噸杞?/span>Overloading 聽聽聽 濡傛灉鍦ㄤ竴涓被涓畾涔変簡澶氫釜鍚屽悕鐨勬柟娉曪紝瀹冧滑鎴栨湁涓嶅悓鐨勫弬鏁頒釜鏁版垨鏈変笉鍚岀殑鍙傛暟綾誨瀷錛屽垯縐頒負鏂規硶鐨勯噸杞?/span>(Overloading)銆?/span>Overloaded鐨勬柟娉曟槸鍙互鏀瑰彉榪斿洖鍊肩殑綾誨瀷銆?/span> 8.鎶借薄綾繪槸鍚﹀彲緇ф壙瀹炰綋綾?/span>(concrete class) 聽聽聽 聽聽 聽聽 鎶借薄綾繪槸鍚﹀彲緇ф壙瀹炰綋綾伙紝浣嗗墠鎻愭槸瀹炰綋綾誨繀欏繪湁鏄庣‘鐨勬瀯閫犲嚱鏁?/span> 9.try {}閲屾湁涓涓?/span>return璇彞錛岄偅涔堢揣璺熷湪榪欎釜try鍚庣殑finally {}閲岀殑code浼氫笉浼氳鎵ц錛屼粈涔堟椂鍊欒鎵ц錛屽湪return鍓嶈繕鏄悗? 銆銆浼氭墽琛岋紝鍦?/span>return鍓嶆墽琛屻?/span> 聽聽聽 聽聽 @version 鐗?br />聽聽聽 @since 浠庝互涓嬬増鏈紑 /** */涓殑寮澶存槸娉ㄨВ
聽聽聽聽3 瑙掕壊-鐢ㄦ埛瀵瑰簲琛?/font>錛氳琛ㄨ褰曠敤鎴蜂笌瑙掕壊涔嬮棿鐨勫搴斿叧緋?澶氬澶氬叧緋?/font>)錛屼竴涓敤鎴峰彲浠ラ毝灞炰簬澶氫釜瑙掕壊錛屼竴涓鑹茬粍涔熷彲鎷ユ湁澶氫釜鐢ㄦ埛銆?/p>
]]>
聽聽聽 聽聽聽 聽聽聽 ->聽聽 all jar聽
聽聽聽 聽聽聽聽 聽聽 -> 聽 build.xml;build-dist.properties;maven.xml;project.properties;project.xml
寮濮嬶細
聽聽聽 聽聽 1.鍦ㄩ」鐩伐紼?鏍圭洰褰曚笅寤轟竴鏂囦歡澶癸細xdoclet 鎷瘋礉 *.xml 鍒版鏂囦歡涓?br />聽聽聽 聽聽 2.鍦ㄦ鐩綍涓嬪緩 lib 騫舵妸 xdoclet聽 jar 鏀懼叆 .
聽聽聽 聽聽 3.淇敼 build.xml
聽聽聽聽<target聽name="clean">
聽聽聽聽聽聽聽聽<delete聽>
聽聽聽聽聽聽聽聽聽聽聽聽<fileset聽dir="${samples.dist.dir}"聽>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<include聽name="**/*.hbm.xml"/>
聽聽聽聽聽聽聽聽聽聽聽聽</fileset>
聽聽聽聽聽聽聽聽</delete>
聽聽聽聽</target>
聽聽聽聽<!--聽hibernatedoclet聽鏀逛負聽version聽3.0聽鍜屄爄nclude聽**/*.java-->
聽聽聽 聽聽聽 <hibernatedoclet聽>
聽聽聽聽聽聽聽聽聽聽聽聽<fileset聽dir="${samples.java.dir}">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<include聽name="**/*.java"/>
聽聽聽聽聽聽聽聽聽聽聽聽</fileset>
聽聽聽聽聽聽聽聽 <hibernate聽version="3.0"/>
hbm2ddl>> http://blog.csdn.net/f1musicc/archive/2006/02/21/604699.aspx
eclipse->>
聽聽聽 ant runtime home + classpath = 鍒版湰宸ョ▼涓殑 classpath
聽聽聽 ant runtime home + mysql jar ;
聽聽聽 ant runtime home + commons-collection.jar
聽
聽聽聽聽聽聽聽聽聽聽<mkdir聽dir="${hbm2ddl.sql.dir}"聽/>
聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽<taskdef聽name="hbm2ddl"
聽聽聽聽聽聽聽聽聽聽聽聽聽classname="org.hibernate.tool.ant.HibernateToolTask"聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽classpath="E:\\test\\caijing\\WebRoot\\WEB-INF\\classes"/>
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽<hbm2ddl聽destdir="${hbm2ddl.sql.dir}">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<configuration聽configurationfile="../src/hibernate.cfg.xml"聽/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<hbm2ddl聽export="true"聽console="false"聽create="true"聽update="false"聽drop="false"聽outputfilename="bestunix.sql"/>
聽聽聽聽聽聽聽聽聽聽</hbm2ddl>聽
聽聽聽聽聽聽聽聽
聽聽聽聽</target>
->target->name=hibernate->hibernate version=3.0
4.淇敼 build-dist.properties->
聽聽聽 samples.lib.dir錛堟寚瀹氬伐紼媕ar錛?/font>
聽聽聽 samples.src.dir/samples.java.dir錛堜唬鐮佹墍鍦級
聽聽聽 samples.gen-src.dir 錛堟槧灝勭敓鎴愬湴鍧錛?/font>
聽聽聽 聽聽聽 samples.lib.dir聽=聽..\\lib聽
聽聽聽 聽聽聽 samples.src.dir聽=聽..\\src\\java\\questionnaire
聽聽聽 聽聽聽 samples.java.dir聽=聽..\\src\\java\\questionnaire
聽聽聽 聽聽聽 samples.gen-src.dir聽=聽..\\src\\java\\questionnaire
鍔犺澆鍒?eclipse 鐨?ant 涓?br />璋冪敤榪欎釜 target 鍔ㄨ搗鏉ヤ簡灝辮繖鏍楓傚伐浣滃惂錛?br />
]]>
聽聽 jar 涓嬭澆錛?http://xdoclet.codehaus.org聽
聽聽聽eclipes 鎻掍歡 xdoclet http://www.beust.com/doclipse/
XDoclet 1聽涓浜涘伐鍏?br />聽聽聽http://xdoclet.sourceforge.net/xdoclet/tools.html
緗戜笂demo璧勬枡錛?br />聽聽聽http://www.tkk7.com/martinx/archive/2006/01/25/29197.html
XDoclet 2 for Hibernate 3
聽聽聽聽http://www.hibernate.org/338.html
聽聽聽 http://www.tkk7.com/martinx/archive/2006/01/25/29197.html
XDoclet 2 Tags 璇存槑
聽聽聽http://xdoclet.codehaus.org/XDoclet+Plugins
XDoclet 1銆? 瀵規瘮
聽聽聽http://bbmyth.javaeye.com/blog/31812
澶у涓璧鳳紝XDoclet 2鏃朵唬灝辮鏉ュ埌銆傛垜浠ぇ瀹朵竴璧瘋窡涓娿?img src ="http://www.tkk7.com/Good-Game/aggbug/188055.html" width = "1" height = "1" />
]]>
鍙岃壊鐞冿紙2008002錛?/span>=03,04,18,22,25,29#09..
junit浠g爜
import聽java.io.InputStream;
import聽java.net.URL;
import聽java.net.URLConnection;
import聽java.util.regex.Matcher;
import聽java.util.regex.Pattern;
import聽junit.framework.TestCase;
public聽class聽HttpConn聽extends聽TestCase聽{
聽聽聽聽public聽void聽testT()聽throws聽Exception聽{
聽聽聽聽聽聽聽聽zq聽:
聽聽聽聽聽聽聽聽for(int聽i=2008001;true;i++){
聽聽聽聽聽聽聽聽聽聽聽聽String聽num聽=聽聽getQihao(i)聽;
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("鍙岃壊鐞冿紙"+i+"錛?"+聽num);
聽聽聽聽聽聽聽聽聽聽聽聽if(num==null||num.equals(""))聽break聽zq;
聽聽聽聽聽聽聽聽}
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽String聽getQihao(int聽qihao)聽throws聽Exception聽{
聽聽聽聽聽聽聽聽URL聽url聽=聽new聽URL("http://www.cnlot.net/ssq/details.php?issue="+qihao);
聽聽聽聽聽聽聽聽URLConnection聽uconn聽=聽url.openConnection();
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽String聽num聽=聽"";
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽InputStream聽in聽=聽uconn.getInputStream();
聽聽聽聽聽聽聽聽byte[]聽bs聽=聽new聽byte[in.available()];
聽聽聽聽聽聽聽聽in.read(bs);
聽聽聽聽聽聽聽聽String聽date聽=聽new聽String(bs)聽;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽Pattern聽pa聽=聽Pattern.compile("聽.+color=red>([0-9][0-9])<.+"聽);
聽聽聽聽聽聽聽聽Matcher聽m聽=聽pa.matcher(date);
聽聽聽聽聽聽聽聽while(聽m.find()聽)
聽聽聽聽聽聽聽聽聽聽聽聽num+=聽m.group(1)+",";
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽pa聽=聽Pattern.compile("聽.+color=blue>([0-9][0-9])<.+"聽);
聽聽聽聽聽聽聽聽聽m聽=聽pa.matcher(date);
聽聽聽聽聽聽聽聽while(聽m.find()聽)
聽聽聽聽聽聽聽聽聽聽聽聽num聽=聽num.substring(聽0,num.length()-1聽)+"#"+m.group(1)聽;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽pa聽=聽Pattern.compile("^(([0-9][0-9],){5,}[0-9][0-9]#([0-9][0-9],)*[0-9][0-9]\\|)*(([0-9][0-9],){5,}[0-9][0-9]#([0-9][0-9],)*[0-9][0-9])*$");
聽聽聽聽聽聽聽聽m聽=聽聽pa.matcher(num);
聽聽聽聽聽聽聽聽if(聽m.find()聽)
聽聽聽聽聽聽聽聽聽聽聽聽return聽num聽;
聽聽聽聽聽聽聽聽else聽
聽聽聽聽聽聽聽聽聽聽聽聽return聽null聽;
聽聽聽聽}
}
]]>
聽聽聽聽timer.schedule(new聽RunTask(),聽1000聽*聽60,聽1000聽*聽240);
////////////////////////////////////
public聽class聽RunTask聽extends聽TimerTask聽{
聽聽private聽boolean聽run聽=聽false;
聽聽public聽RunTask()聽{
聽聽}
聽聽public聽void聽run()聽{
聽聽聽聽聽聽聽.
聽聽}
聽聽private聽static聽Logger聽logger聽=聽Logger.getLogger(RunTask.class);
}
]]>
]]>
聽聽聽 聽聽聽 聽聽聽 URL聽httpurl聽=聽new聽URL(url);
聽聽聽聽聽聽聽聽聽聽聽聽HttpURLConnection聽httpConn聽=聽null;
聽聽聽聽聽聽聽聽聽聽聽聽httpConn聽=聽(HttpURLConnection)聽httpurl.openConnection();
聽聽聽聽聽聽聽聽聽聽聽聽httpConn.setRequestMethod("POST");
聽聽聽聽聽聽聽聽聽聽聽聽httpConn.setDoOutput(true);
聽聽聽聽聽聽聽聽聽聽聽聽httpConn.setDoInput(true);
聽聽聽 聽聽 聽聽 聽 //姝e紡榪炴帴
聽聽聽聽聽聽聽聽聽聽聽聽httpConn.getOutputStream();
聽聽聽 聽聽 聽聽聽聽 /**杈撳叆鍙傛暟
聽聽聽 聽聽 聽聽 聽 PrintWriter outs = new PrintWriter(httpConn.getOutputStream());
聽聽聽 聽聽聽 聽聽聽 outs.print("&back_url=" + returnurl);
聽聽聽 聽聽聽 聽聽聽 outs.print("&orderid=" + deposit.getOrderId());
聽聽聽 聽聽聽 聽聽聽 outs.print("&bussinessid=" + SZFConstant.B_ID);
聽聽聽 聽聽聽 聽聽聽 outs.print("&digestString="
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 + MD5Util.MD5Encode(SZFConstant.B_ID + deposit.getOrderId()
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 + SZFConstant.KEY));
聽聽聽 聽聽聽 聽聽聽 outs.flush();
聽聽聽 聽聽聽 聽聽聽 outs.close();
聽聽聽 聽聽 聽聽 聽 GET 灝變笉瑕?璇?浜喡?url + 鍙傛暟
聽聽聽聽聽聽聽聽聽聽聽 */
聽聽聽聽聽聽聽聽聽聽聽聽byte[]聽bb聽=聽new聽byte[httpConn.getInputStream().available()];
聽聽聽聽聽聽聽聽聽聽聽聽httpConn.getInputStream().read(bb);
聽聽聽聽聽聽聽聽聽聽聽 //鍙栧緱鏁版嵁
聽聽聽 聽聽聽 聽聽聽 String聽str聽=聽new聽String(bb);
javascript 鐜板湪榪欑鍙栨硶鏈変釜鍚嶅瓧鍙紙ajax錛?杞?
<html>
<head>
<link聽href="http://www.cc168.com.cn/css/index.css"聽rel="stylesheet"聽type="text/css">
<link聽rel="stylesheet"聽href="http://www.cc168.com.cn/css/framework.css"聽type="text/css"/>
聽<script聽language="javascript">
聽
聽window.onload聽=聽function()
聽{
聽聽CreateDateSelect();
聽}
聽var聽xmlHttp聽=聽false;
聽var聽e;
聽
聽//鍒涘緩XMLHTTP瀵硅薄
聽function聽getXMLHTTPObj()
聽{
聽聽var聽C聽=聽null;
聽聽try
聽聽{
聽聽聽聽聽C聽=聽new聽ActiveXObject("Msxml2.XMLHTTP");
聽聽}
聽聽catch(e)
聽聽{
聽聽聽try
聽聽聽{
聽聽聽聽C聽=聽new聽ActiveXObject("Microsoft.XMLHTTP");
聽聽聽}
聽聽聽catch(sc)
聽聽聽{
聽聽聽聽C聽=聽null;
聽聽聽}
聽聽}
聽聽
聽聽if(聽!C聽&&聽typeof聽XMLHttpRequest聽!=聽"undefined"聽)
聽聽{
聽聽聽C聽=聽new聽XMLHttpRequest();
聽聽}
聽聽
聽聽return聽C;
聽}
聽
聽//璋冪敤榪滅▼鏂規硶
聽function聽callServer(e)
聽{聽
聽聽try
聽聽{
聽聽聽if(聽xmlHttp聽&&聽xmlHttp聽.readyState聽!=聽0聽)
聽聽聽{
聽聽聽聽xmlHttp.abort();
聽聽聽}
聽聽聽
聽聽聽xmlHttp聽=聽getXMLHTTPObj();
聽聽聽
聽聽聽if(聽xmlHttp聽)
聽聽聽{
聽聽聽聽document.getElementById("outgroup").style.display聽=聽"none";
聽聽聽聽//鑾峰彇鏌ヨ鏃ユ湡
聽聽聽聽var聽dateSele聽=聽e.options[e.selectedIndex].value;
聽聽聽聽document.getElementById("date").innerHTML聽=聽dateSele聽+聽"聽寮鏀懼紡鍩洪噾鍑鍊?/span>";
聽聽聽聽//鏋勯犳煡璇㈣繛鎺ュ瓧絎︿覆
聽聽聽聽var聽url聽=聽"https://www.google.com/accounts/ManageAccount";
聽聽聽聽
聽聽聽聽//鎵撳紑榪炴帴
聽聽聽if(navigator.appName聽==聽'Netscape'){
聽聽聽try聽{
聽聽聽聽netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
聽聽聽}聽catch聽(e)聽{
聽聽聽聽聽聽聽alert("Permission聽UniversalBrowserRead聽denied.");
聽聽聽}}
聽聽聽聽xmlHttp.open("GET",聽url,聽true);
聽聽聽聽//璁劇疆鍥炶皟鍑芥暟
聽聽聽聽xmlHttp.onreadystatechange聽=聽updatePage;
聽聽聽聽//鍙戦佽姹?/span>
聽聽聽聽xmlHttp.send(null);
聽聽聽}
聽聽聽else
聽聽聽{
聽聽聽聽document.getElementById("flag").innerHTML聽=聽"XMLHTTP瀵硅薄鍒涘緩澶辮觸";
聽聽聽}
聽聽}
聽聽catch聽(e)
聽聽{
聽聽聽document.getElementById("flag").innerHTML聽=聽"鏌ヨ閿欒:"聽+聽e;
聽聽}
聽}
聽
聽//鍥炶皟澶勭悊鍑芥暟
聽function聽updatePage()
聽{
聽聽try聽{
聽聽聽if聽(xmlHttp.readyState聽==聽1)
聽聽聽{
聽聽聽聽document.getElementById("flag").innerHTML聽=聽"姝e湪鍔犺澆榪炴帴瀵硅薄";
聽聽聽}
聽聽聽if聽(xmlHttp.readyState聽==聽2)
聽聽聽{
聽聽聽聽document.getElementById("flag").innerHTML聽=聽"榪炴帴瀵硅薄鍔犺澆瀹屾瘯銆?/span>";
聽聽聽}
聽聽聽if聽(xmlHttp.readyState聽==聽3)
聽聽聽{
聽聽聽聽document.getElementById("flag").innerHTML聽=聽"鏁版嵁鑾峰彇涓?img src="http://www.tkk7.com/images/dot.gif" />";
聽聽聽}
聽聽聽if聽(xmlHttp.readyState聽==聽4)
聽聽聽{
聽聽聽聽var聽response聽=聽xmlHttp.responseText;
聽聽聽聽document.getElementById("out").innerHTML聽=聽response;
聽聽聽聽document.getElementById("outgroup").style.display聽=聽"";
聽聽聽}
聽聽}
聽聽catch聽(e)
聽聽{
聽聽聽聽聽聽document.getElementById("flag").innerHTML聽=聽"鍥炶皟澶勭悊閿欒:"聽+聽e;
聽聽}
聽}
聽//鍒涘緩鏃ユ湡閫夋嫨涓嬫媺妗?/span>
聽function聽CreateDateSelect()
聽{
聽聽var聽html聽=聽[];
聽聽聽聽聽聽聽聽聽
聽聽for(var聽iYear=2005;聽iYear<=2006;聽iYear聽++)
聽聽{
聽聽聽for(聽var聽iMonth=1;聽iMonth<=12;聽iMonth聽++聽)
聽聽聽{
聽聽聽聽for(聽var聽iDay=1;聽iDay<=31;聽iDay聽++聽)
聽聽聽聽{聽
聽聽聽聽html[html.length]聽=聽"<option聽value=\""聽聽+聽iYear聽+聽"\-"聽+聽iMonth聽+聽"\-"聽+聽iDay聽+聽"\">"聽+聽iYear聽+聽"騫?/span>"聽+聽iMonth聽+聽"鏈?/span>"聽+聽iDay聽+聽"鏃?/span>"聽+聽"</option>";
聽聽聽聽}
聽聽聽}
聽聽}
聽聽聽聽聽聽
聽聽document.getElementById("dateSele").innerHTML聽=聽"<select聽name=\"dateSele\"聽id=\"dateSele\"聽onchange=\"callServer(this);\">"聽+聽html.join("")聽+聽"</select>";
聽}聽
聽</script>
]]>
瀹樻柟瀹屾暣API錛?Template Language (*.xdt)
鍥犱負鍙傝冧腑錛氭槸榪樻槸姣旇緝澶嶆潅鐨勪緥錛堟暟鏈漢鎰氶挐^_^錛夌壒鐣欎竴鏂囷細
1>ant緙栬緫鏂囦歡
<project聽name="xdocletExample"聽default="doall"聽basedir=".">
聽聽聽聽<property聽name="basedir"聽location="E:\ue_test\xdoclet"聽/>
聽聽聽聽<property聽name="xdoclet.lib.dir"聽location="D:\hbn\hibernate-3.2\xdoclet-1.2.3\lib"聽/>
聽聽聽聽<property聽name="gen.src.dir"聽location="${basedir}/target"聽/>
聽聽聽聽<property聽name="src.dir"聽location="${basedir}/src"聽/>
聽聽聽聽<property聽name="template.dir"聽location="${basedir}/template"聽/>
聽聽聽聽<property聽name="customtag.dir"聽location="${basedir}/bin"聽/>
聽聽聽聽<path聽id="xdoclet.lib.path">
聽聽聽聽聽聽聽<fileset聽dir="${xdoclet.lib.dir}"聽includes="*.jar"聽/>
聽聽聽聽</path>
聽聽聽聽<taskdef聽name="xdoclet"聽classname="xdoclet.DocletTask"聽classpathref="xdoclet.lib.path"聽/>聽聽聽
聽聽聽聽<target聽name="init"聽/>
聽聽聽聽<target聽name="daogener"聽depends="init">
聽聽聽聽聽聽聽<xdoclet聽destdir="${gen.src.dir}">
聽聽聽聽聽聽聽聽聽聽聽<fileset聽dir="${src.dir}"聽includes="${cjava.file}"聽/>
聽聽聽聽聽聽聽聽聽聽聽<template聽templateFile="${xdt.file}"聽acceptInterfaces="false"聽acceptAbstractClasses="false"聽destinationfile="{0}DAO.java"聽/>
聽聽聽聽聽聽聽</xdoclet>
聽聽聽聽</target>
聽聽聽聽<target聽name="doall"聽depends="daogener,daoimplgener"聽/>
</project>
鍦ㄨ繍琛屼笂闈㈡枃浠舵椂鍊欏姩鎬佽緭鍏ュ弬鏁?br />聽1.渚濈収鐨?.java 鏂囦歡錛?cjava.file 錛夛紱
聽2.渚濈収鐨?.xdt.file 鏂囦歡錛?xdt.file 錛夛紱
姣斿DOS涓緭鍏ワ細
E:\ue_test\xdoclet>ant daogener
-Dxdt.file=template\daointerface.xdt
-Dcjava.file=test\TestXDoclet.java
2.鍙傝冪殑java鏂囦歡錛堢畝鍗曡繃澶翠簡 鍛靛懙錛?br />
聽聽/**
聽聽*聽@hasRef
聽聽*/
public聽class聽TestXDoclet{
聽聽聽聽/**
聽聽聽聽聽*聽@ref.model聽name="sytp"
聽聽聽聽聽*/
聽聽聽聽private聽PubSystype聽sytp;
聽聽聽聽private String gg;
}
3.xdt 妯℃澘
聽 鏍囩瑙i噴錛?br />聽 <XDtClass:ifHasClassTag聽tagName="hasRef">鍒ゆ柇 java鏂囦歡涓湁 @hasRef
聽 <XDtField:forAllFields>聽 1> 寰幆鏌ユ壘
聽
聽 2>鍒ゆ柇鏈?/font>@ref.model聽name=銆傘?/span>
聽 <XDtField:ifHasFieldTag聽tagName="ref.model"聽paramName="name">
聽
聽 3>鍙栧?/b>
聽聽<XDtField:fieldTagValue聽tagName="ref.model"聽paramName="name"聽/> 聽
import聽java.util.List;
//榪欐槸聽packageName.className聽榪欏拰濂界悊瑙?/font>
import聽<XDtPackage:packageName聽/>.<XDtClass:className聽/>;
public聽interface聽<XDtClass:className聽/>DAO聽{
聽聽聽聽//娣誨姞
聽聽聽聽boolean聽add(<XDtClass:className聽/>聽instance);
聽聽聽聽
聽聽聽聽//閫昏緫娣誨姞
聽聽聽聽<XDtClass:ifHasClassTag聽tagName="hasRef">
聽聽聽聽聽聽聽聽boolean聽add(<XDtClass:className聽/>聽instance,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<XDtField:forAllFields>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<XDtField:ifHasFieldTag聽tagName="ref.model"聽paramName="name">聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String聽<XDtField:fieldTagValue聽tagName="ref.model"聽paramName="name"聽/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</XDtField:ifHasFieldTag>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</XDtField:forAllFields>);聽聽
聽聽聽聽</XDtClass:ifHasClassTag>
聽聽聽聽//鏇存柊
聽聽聽聽boolean聽update(<XDtClass:className聽/>聽instance);
聽聽聽聽//寰楀埌涓涓璞?/font>
聽聽聽聽<XDtClass:className聽/>聽get(String聽pkid);
}
榪愯DOS->
E:\ue_test\xdoclet>ant daogener
-Dxdt.file=template\daointerface.xdt
-Dcjava.file=test\TestXDoclet.java
寰楀埌鐨勪唬鐮侊細
import聽java.util.List;
//榪欐槸聽packageName.className聽榪欏拰濂界悊瑙?/span>
import聽test.TestXDoclet;
public聽interface聽TestXDocletDAO聽{
聽聽聽聽//娣誨姞
聽聽聽聽boolean聽add(TestXDoclet聽instance);
聽聽聽聽//閫昏緫娣誨姞
聽聽聽聽聽聽聽聽boolean聽add(TestXDoclet聽instance,String聽sytp);聽
聽聽聽聽//鏇存柊
聽聽聽聽boolean聽update(TestXDoclet聽instance);
聽聽聽聽//寰楀埌涓涓璞?/span>
聽聽聽聽TestXDoclet聽get(String聽pkid);
}
]]>
聽聽聽聽聽*聽灝嗗璞¤漿鍖栨垚java.sql.Blob聽
聽聽聽聽聽*聽瑕佹眰聽瀵硅薄鏄簭鍒楀寲鐨?br />聽聽聽聽聽
*/
聽聽聽聽
public
聽java.sql.Blob聽ObjectToBlob(Object聽obj)聽
throws
聽IOException{
聽聽聽聽聽聽聽聽
try
聽{
聽聽聽聽聽聽聽聽聽聽聽聽ByteArrayOutputStream聽out聽
=
聽
new
聽ByteArrayOutputStream();
聽聽聽聽聽聽聽聽聽聽聽聽ObjectOutputStream聽outputStream聽
=
聽
new
聽ObjectOutputStream(out);
聽聽聽聽聽聽聽聽聽聽聽聽outputStream.writeObject(obj);
聽聽聽聽聽聽聽聽聽聽聽聽
byte
[]聽bytes聽
=
聽out.toByteArray();
聽聽聽聽聽聽聽聽聽聽聽聽outputStream.close();
聽聽聽聽聽聽聽聽聽聽聽聽
return
聽Hibernate.createBlob(bytes);
聽聽聽聽聽聽聽聽}聽
catch
聽(Exception聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//
聽TODO:聽handle聽exception
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
"
ObjectToBlob
"
);
聽聽聽聽聽聽聽聽聽聽聽聽
return
聽
null
;
聽聽聽聽聽聽聽聽}聽聽聽聽聽聽聽聽
聽聽聽聽}
聽聽聽聽
聽聽聽聽
聽聽聽聽
/*
聽聽聽聽聽*聽灝唈ava.sql.Blob聽杞寲鎴惵犲璞÷犵浉搴斿璞?br />聽聽聽聽聽*聽瑕佹眰聽瀵硅薄鏄簭鍒楀寲鐨?br />聽聽聽聽聽
*/
聽聽聽聽
聽聽聽聽
public
聽Object聽BlobToObject(java.sql.Blob聽desblob,Object聽obj)聽
throws
聽IOException{
聽聽聽聽聽聽聽聽
try
聽{
聽聽聽聽聽聽聽聽聽聽聽聽ObjectInputStream聽in聽
=
聽
new
聽ObjectInputStream(desblob.getBinaryStream());
聽聽聽聽聽聽聽聽聽聽聽聽obj聽
=
聽聽in.readObject();
聽聽聽聽聽聽聽聽聽聽聽聽in.close();聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽
return
聽obj;
聽聽聽聽聽聽聽聽}聽
catch
聽(Exception聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//
聽TODO:聽handle聽exception
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
"
BlobToObject
"
);
聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
聽聽聽聽聽聽聽聽聽聽聽聽
return
聽
null
;
聽聽聽聽聽聽聽聽}聽聽聽聽聽聽聽聽
聽聽聽聽}聽聽聽聽
聽聽聽聽
聽聽聽聽
]]>
2.聽聽聽聽 琚0鏄庝負final鐨勫彉閲忓繀欏誨湪澹版槑鏃剁粰瀹氬垵鍊鹼紝鑰屽湪浠ュ悗鐨勫紩鐢ㄤ腑鍙兘璇誨彇錛屼笉鍙慨鏀廣?br />
3.聽聽 鍖垮悕鐨勫唴閮ㄧ被鏄病鏈夊悕瀛楃殑鍐呴儴綾匯備笉鑳?/span>extends(緇ф壙) 鍏跺畠綾伙紝浣嗕竴涓唴閮ㄧ被鍙互浣滀負涓涓帴鍙o紝鐢卞彟涓涓唴閮ㄧ被瀹炵幇銆?br />
4.聽 闈欐佸唴閮ㄧ被錛?/span>Inner Class錛夊啓鎴愯繖鏍鋒墠鍙互 鍦ㄥ唴閮?new 鍑?錛?static final public class XXXxx
聽聽聽 聽聽 聽聽 聽 1.鍒涘緩涓涓?/span>static鍐呴儴綾葷殑瀵硅薄錛屼笉闇瑕佷竴涓閮ㄧ被瀵硅薄
聽聽聽 聽聽聽 聽聽聽2涓嶈兘浠庝竴涓?/span>static鍐呴儴綾葷殑涓涓璞¤闂竴涓閮ㄧ被瀵硅薄
5.
聽聽聽 濡傛灉鍦ㄥ瓙綾諱腑瀹氫箟鏌愭柟娉曚笌鍏剁埗綾繪湁鐩稿悓鐨勫悕縐板拰鍙傛暟錛屾垜浠璇ユ柟娉曡閲嶅啓 (Overriding)銆?/span>
]]>
聽聽聽 @author 浣滆?br />聽聽聽 @see 鍙﹁鍙傝
聽聽聽 聽聽聽 錛?錛夈丂see "string" 涓?string"娣誨姞鏂囨湰欏癸紝涓嶄駭鐢熼摼鎺ャ?br />聽聽聽 聽聽聽 錛?錛夈丂see <a href="URL#Value">Label</a> 浣跨敤HTML鏍囪浜х敓閾炬帴
聽聽聽 聽聽聽 錛?錛夈丂see package.class#member Label 浣跨敤Java璇█鐨勫悕瀛梡ackage.class #member浜х敓閾炬帴銆?
聽聽聽 @param 鍙傛暟璇存槑
聽聽 */聽 鐨勫氨榪戝師鍒?鍦ㄩ偅涓笂闈㈠氨涓洪偅涓敞瑙?/dt>
鍙傜収錛歨ttp://java.ccidnet.com/art/3743/20031203/519697_1.html
/** class description
*/
3銆乂ariable Description:鎻忚堪鍙橀噺鐨勬剰涔夊拰鍙栧煎惈涔夈?br /> /** var variable description
*/
4銆丮ethod Description:鏍囨槑姣忎釜鏂規硶鐨勮緭鍏ャ佽緭鍑哄弬鏁板拰榪斿洖鍊肩被鍨嬶紝璇存槑鐗規畩鍙橀噺鍙栧肩殑鍚箟銆傜浉鍏崇被鏂囨。閾炬帴銆?br />
/** method description
* @param var signification 鏂規硶鍙傛暟璇存槑
* @exception exception class name throws 璇存槑
* @return return_value return signification return 璇存槑
*/
5銆丄ssociation Description:鍏寵仈綾繪枃妗f弿榪幫紝鍦ㄦ敞閲婂綋涓渶瑕佸弬寮曞叾瀹冩枃妗f弿榪扮殑鍦版柟錛屽彲鍦ㄧ浉搴旂殑娉ㄩ噴褰撲腑濡備笅鎻掑叆錛?br /> /** method description
* @param var signification
* @exception exception class name
* @return return_value return signification
* @see package.class#member label
*/
6銆佸寘鎻忚堪鏂囦歡錛氭鎷弿榪板寘鐨勫姛鑳藉拰璁捐姒傝銆備負姣忎釜鍖呭垱寤轟竴涓弿榪版枃浠訛紝鍛藉悕涓簆ackage.html錛屼笌鍖呯殑java鏂囦歡鏀懼湪涓璧楓?
]]>
2.綾葷Щ鍔?(聽alt+shift+V )
3.鏂規硶涓婄Щ鐖剁被,涓嬬Щ瀛愮被 (alt+shift+T) + U/D
4.鏂規硶鎺ュ彛鍖柭?(alt+shift+T) +T
5.閮ㄥ垎浠g爜鎻愬崌涓烘柟娉?alt+shift+M
6.灞閮ㄥ彉閲忔彁鍗囦負綾誨彉閲?alt+shift+F
.............
***************************************************************
Ctrl+M: 聽 宸ヤ綔鍖烘渶澶у寲/鏈灝忓寲 聽
聽 Alt+/: 聽 聽 鏅鴻兘鎻愮ず 聽
聽 F3: 聽 聽 聽 聽 聽 瀵熺湅澹版槑 聽
聽 Crtl+1: 聽 淇閿欒 聽
聽 聽
聽 Shift+Alt+T: 聽 閲嶆瀯 聽
聽 Shift+Alt+M: 聽 鎻愬彇鍑芥暟 聽
聽 Shift+Alt+R: 聽 閲嶅懡鍚?聽
聽 Shift+Alt+C: 聽 鏇存敼鍑芥暟鏍囪 聽
聽 聽
聽 Ctrl+Shitf+F: 聽 鏍煎紡鍖栦唬鐮?聽
]]>
鍦ㄦ鏋朵腑 鍙戠幇 ConfigHelper綾昏搗鍒頒簡浣滅敤 銆?br />緇撳悎鑷繁寮鍙戦渶姹傦紝鍐欏嚭浜嗚嚜宸辯殑 甯︽煡璇㈡枃浠跺姛鑳界被
鎵╁睍鐨勪富瑕侀儴鍒嗗湪 findFile鏂規硶 榪欑敤浜嗕竴涓?綆鍗曠殑鏁版嵁緇撴瀯鏈夊叴瓚g殑鍙互鐪嬬湅
聽
嫻嬭瘯錛?/b>
鏂囦歡skynet.xml
<xml-body>
聽聽聽聽<man聽id='1'>
聽聽聽聽聽聽聽聽<name>鍒樺嚡姣?/span></name>
聽聽聽聽聽聽聽聽<avg>24</avg>
聽聽聽聽</man>
聽聽聽聽<man聽id='2'>
聽聽聽聽聽聽聽聽<name>heha</name>
聽聽聽聽聽聽聽聽<avg>25</avg>
聽聽聽聽</man>
</xml-body>
嫻嬭瘯綾?/font>
import聽org.apache.commons.jxpath.JXPathContext;
import聽org.apache.commons.jxpath.XMLDocumentContainer;
import聽junit.framework.TestCase;
public聽class聽SkynetConfigTest聽extends聽TestCase聽{
聽聽聽聽protected聽void聽setUp()聽throws聽Exception聽{
聽聽聽聽聽聽聽聽super.setUp();
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽void聽testConfigFile(){
聽聽聽聽聽聽聽聽System.out.println(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//find聽file聽in聽System聽user.dir聽->聽skynet.xml聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽SkynetConfig.getResourceAsFile(System.getProperty("user.dir")聽,聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽"skynet.xml").getPath()
聽聽聽聽聽聽聽聽);
聽聽聽聽聽聽聽聽System.out.println(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//find聽file聽in聽System聽java.class.path聽->聽skynet.xml聽
聽聽聽聽聽聽聽聽聽聽聽聽SkynetConfig.getResourceAsFile(System.getProperty("java.class.path")聽,聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽"skynet.xml").getPath()聽
聽聽聽聽聽聽聽聽);
聽聽聽聽}
聽聽聽聽public聽void聽testConfigURL(){
聽聽聽聽聽聽聽聽聽聽聽聽JXPathContext聽jx聽=聽JXPathContext.newContext(new聽XMLDocumentContainer(聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//聽in聽System聽user.dir,java.class.path聽find聽聽url:skynet
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽SkynetConfig.getResourceAsURL("skynet.xml")聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽));
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(聽jx.getValue("//man[avg='24']/@id")聽);
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(聽jx.getValue("//man[avg='24']/name")聽);
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽void聽testConfigStream(){
聽聽聽聽聽聽聽聽System.out.println(聽SkynetConfig.getResourceAsStream("skynet.xml")聽);
聽聽聽聽}
}
緇撴灉錛?br />E:\src3\rlzy15\lmisWeb\WEB-INF\classes\test\config\skynet.xml
E:\src3\rlzy15\lmisWeb\WEB-INF\classes\test\config\skynet.xml
1
鍒樺嚡姣?br />java.io.FileInputStream@1551d7f
SkynetConfig 綾?/span>
import聽java.io.File;
import聽java.io.FileInputStream;
import聽java.io.InputStream;
import聽java.net.URL;
import聽org.apache.commons.jxpath.JXPathContext;
import聽org.apache.commons.jxpath.XMLDocumentContainer;
import聽org.hibernate.util.ConfigHelper;
public聽class聽SkynetConfig聽{
聽聽聽聽
聽聽聽聽public聽static聽final聽URL聽getResourceAsURL(final聽String聽path)聽{
聽聽聽聽聽聽聽聽URL聽url聽=聽null;
聽聽聽聽聽聽聽聽//聽First,聽try聽to聽locate聽this聽resource聽through聽the聽current
聽聽聽聽聽聽聽聽//聽context聽classloader.
聽聽聽聽聽聽聽聽ClassLoader聽contextClassLoader聽=聽Thread.currentThread().getContextClassLoader();
聽聽聽聽聽聽聽聽if聽(contextClassLoader!=null)聽{
聽聽聽聽聽聽聽聽聽聽聽聽url聽=聽contextClassLoader.getResource(path);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽if聽(url聽!=聽null)
聽聽聽聽聽聽聽聽聽聽聽聽return聽url;
聽聽聽聽聽聽聽聽//聽Next,聽try聽to聽locate聽this聽resource聽through聽this聽class's聽classloader
聽聽聽聽聽聽聽聽url聽=聽ConfigHelper.class.getClassLoader().getResource(path);
聽聽聽聽聽聽聽聽if聽(url聽!=聽null)
聽聽聽聽聽聽聽聽聽聽聽聽return聽url;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽//聽Next,聽try聽to聽locate聽this聽resource聽through聽the聽system聽classloader
聽聽聽聽聽聽聽聽url聽=聽ClassLoader.getSystemClassLoader().getResource(path);
聽聽聽聽聽聽聽聽if(url聽!=null)
聽聽聽聽聽聽聽聽聽聽聽聽return聽url;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽File聽ff聽=聽getResourceAsFile(System.getProperty("user.dir")聽,path);
聽聽聽聽聽聽聽聽if(ff==null)
聽聽聽聽聽聽聽聽聽聽聽聽ff聽=聽getResourceAsFile(System.getProperty("java.class.path")聽,聽path);
聽聽聽聽聽聽聽聽try聽{
聽聽聽聽聽聽聽聽聽聽聽聽url聽=聽new聽URL("file:/"+ff.getPath());
聽聽聽聽聽聽聽聽}聽catch聽(Exception聽e)聽{e.printStackTrace();}
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽return聽url;
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽static聽InputStream聽getResourceAsStream(final聽String聽resource)聽{
聽聽聽聽聽聽聽聽String聽stripped聽=聽resource.startsWith("/")聽?聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽resource.substring(1)聽:聽resource;
聽聽聽聽聽聽聽聽InputStream聽stream聽=聽null;聽
聽聽聽聽聽聽聽聽ClassLoader聽classLoader聽=聽Thread.currentThread().getContextClassLoader();
聽聽聽聽聽聽聽聽if聽(classLoader!=null)聽{
聽聽聽聽聽聽聽聽聽聽聽聽stream聽=聽classLoader.getResourceAsStream(聽stripped聽);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽if聽(聽stream聽==聽null聽)聽{
聽聽聽聽聽聽聽聽聽聽聽聽SkynetConfig.class.getResourceAsStream(聽resource聽);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽if聽(聽stream聽==聽null聽)聽{
聽聽聽聽聽聽聽聽聽聽聽聽stream聽=聽SkynetConfig.class.getClassLoader().getResourceAsStream(聽stripped聽);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽if聽(聽stream聽==聽null聽)聽{
聽聽聽聽聽聽聽聽聽聽聽聽File聽ff聽=聽getResourceAsFile(System.getProperty("user.dir")聽,resource);
聽聽聽聽聽聽聽聽聽聽聽聽if(ff==null)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ff聽=聽getResourceAsFile(System.getProperty("java.class.path")聽,聽resource);
聽聽聽聽聽聽聽聽聽聽聽聽try聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽stream聽=聽new聽FileInputStream(ff);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(stream==null)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽throw聽new聽Exception(聽resource聽+聽"聽not聽found"聽);
聽聽聽聽聽聽聽聽聽聽聽聽}聽catch聽(Exception聽e)聽{e.printStackTrace();}
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽return聽stream;
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽static聽File聽getResourceAsFile(String聽str,String聽findff){
聽聽聽聽聽聽聽聽String[]聽sfd聽=聽str.split(";");
聽聽聽聽聽聽聽聽for(int聽i=0;i<sfd.length;i++){
聽聽聽聽聽聽聽聽聽聽聽聽File聽file聽=聽new聽File(sfd[i]);
聽聽聽聽聽聽聽聽聽聽聽聽if(聽file.isDirectory()){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽File[]聽cfs聽=聽file.listFiles();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽for(int聽j=0;j<cfs.length;j++){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽File聽ff聽=聽findFile(cfs[j],findff);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(ff==null)continue;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽else聽return聽ff;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽return聽null聽;
聽聽聽聽}
聽聽聽聽
聽聽聽聽private聽static聽File聽findFile(File聽file,String聽findff){
聽聽聽聽聽聽聽聽if(file.isFile()聽&&聽file.exists()聽&&聽isFileEqu(file,findff)聽聽)聽return聽file聽;
聽聽聽聽聽聽聽聽else聽if(聽file.isDirectory()聽){
聽聽聽聽聽聽聽聽聽聽聽聽File[]聽cfs聽=聽file.listFiles();
聽聽聽聽聽聽聽聽聽聽聽聽for(int聽i=0;i<cfs.length;i++){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽File聽ff聽=聽findFile(cfs[i],findff);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(ff==null)continue;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if(聽isFileEqu(ff,findff)聽){
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return聽ff;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽return聽null聽;
聽聽聽聽}
聽聽聽聽
聽聽聽聽private聽static聽boolean聽isFileEqu(File聽ff,String聽findff){
聽聽聽聽聽聽聽聽String聽path聽=聽ff.getPath().trim()聽;
聽聽聽聽聽聽聽聽String聽findfft聽=聽findff.trim()聽;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽if(聽path.lastIndexOf(聽findfft聽)>0)return聽true;
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽return聽false;
聽聽聽聽}
}
]]>