Java涓嬌鐢ㄧ殑璺緞錛屽垎涓轟袱縐嶏細緇濆璺緞鍜岀浉瀵硅礬寰勩傚綊鏍圭粨搴曪紝Java鏈川涓婂彧鑳戒嬌鐢ㄧ粷瀵硅礬寰勬潵瀵繪壘璧勬簮銆傛墍鏈夌殑鐩稿璺緞瀵繪壘璧勬簮鐨勬柟娉曪紝閮戒笉榪囨槸涓浜涗究鍒╂柟娉曘備笉榪囨槸API鍦ㄥ簳灞傚府鍔╂垜浠瀯寤轟簡緇濆璺緞錛屼粠鑰屾壘鍒拌祫婧愮殑錛?/p>
鍦ㄥ紑鍙慦eb鏂歸潰鐨勫簲鐢ㄦ椂, 緇忓父闇瑕佽幏鍙?鏈嶅姟鍣ㄤ腑褰撳墠WebRoot鐨勭墿鐞嗚礬寰勩?/p>
濡傛灉鏄疭ervlet , Action , Controller, 鎴栧垯Filter , Listener , 鎷︽埅鍣ㄧ瓑鐩稿叧綾繪椂錛?鎴戜滑鍙渶瑕佽幏寰桽ervletContext錛?鐒跺悗閫氳繃ServletContext.getRealPath("/")鏉ヨ幏鍙栧綋鍓嶅簲鐢ㄥ湪鏈嶅姟鍣ㄤ笂鐨勭墿鐞嗗湴鍧銆?/p>
濡傛灉鍦ㄧ被涓彇涓嶅埌ServletContext鏃訛紝 鏈変袱縐嶆柟寮忓彲浠ュ仛鍒幫細
1. 鍒╃敤Java鐨勭被鍔犺澆鏈哄埗 璋冪敤 XXX.class.getClassLoader().getResource(""); 鏂規硶鏉ヨ幏鍙栧埌ClassPath , 鐒跺悗澶勭悊鑾峰緱WebRoot鐩綍錛岃繖縐嶆柟寮忓彧鑳芥槸璇lass鍦╓ebRoot/WEB-INF/classes涓嬫墠鑳界敓鏁堬紝 濡傛灉璇lass琚墦鍖呭埌涓涓猨ar鏂囦歡涓紝 鍒欒鏂規硶澶辨晥銆傝繖鏃跺氨搴旇鐢ㄤ笅闈竴縐嶆柟寮忋?/p>
2. spring妗嗘灦鐨勬濊礬, 鍦╓EB-INF/web.xml涓?錛?鍒涘緩涓涓獁ebAppRootKey鐨刾aram, 鎸囧畾涓涓鹼紙榛樿涓簑ebapp.root錛変綔涓洪敭鍊鹼紝 鐒跺悗閫氳繃Listener , 鎴栬匜ilter , 鎴栬匰ervlet 鎵цString webAppRootKey = getServletContext().getRealPath("/"); 騫跺皢webAppRootKey瀵瑰簲鐨剋ebapp.root 鍒嗗埆浣滀負Key , Value鍐欏埌System Properties緋葷粺灞炴т腑銆備箣鍚庡湪紼嬪簭涓氳繃System.getProperty("webapp.root")鏉ヨ幏寰梂ebRoot鐨勭墿鐞嗚礬寰勩?/p>
鏍規嵁絎簩縐嶇殑鎬濊礬錛屾垜浠繕鍙互鍐嶆墿灞曚竴涓嬨備笉榪囧浜庡湪閮ㄧ講鍦ㄤ竴鍙版湇鍔″櫒涓殑搴旂敤鏉ヨ錛岃嫢榪樹笉鏄綘鎵闇璇峰啀寰涓嬬湅銆?/p>
涓嬮潰鏄竴浜涘緱鍒癱lasspath鍜屽綋鍓嶇被鐨勭粷瀵硅礬寰勭殑涓浜涙柟娉曘備綘鍙嬌鐢ㄥ叾涓殑涓浜涙柟娉曟潵寰楀埌浣犻渶瑕佺殑璧勬簮鐨勭粷瀵硅礬寰?
1. DebitNoteAction.class.getResource("")
寰楀埌鐨勬槸褰撳墠綾籉ileTest.class鏂囦歡鐨刄RI鐩綍銆備笉鍖呮嫭鑷繁錛?/p>
濡傦細file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
atacarnet/src/com/evi/modules/atacarnet/action/
2. DebitNoteAction.class.getResource("/")
寰楀埌鐨勬槸褰撳墠鐨刢lasspath鐨勭粷瀵筓RI璺緞銆?/p>
濡傦細file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
3. Thread.currentThread().getContextClassLoader().getResource("")
寰楀埌鐨勪篃鏄綋鍓岰lassPath鐨勭粷瀵筓RI璺緞
濡傦細file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
4. DebitNoteAction.class.getClassLoader().getResource("") 鎴朇lassLoader.getSystemResource("")
寰楀埌鐨勪篃鏄綋鍓岰lassPath鐨勭粷瀵筓RI璺緞銆?/p>
濡傦細file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
5. 鍙栧緱鏈嶅姟鍣ㄧ浉瀵硅礬寰?/p>
System.getProperty("user.dir")
渚嬪:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin
鎴戞帹鑽愪嬌鐢═hread.currentThread().getContextClassLoader().getResource("")鏉ュ緱鍒板綋鍓嶇殑classpath鐨勭粷瀵硅礬寰勭殑URI琛ㄧず娉?/p>
6. 鍙栧緱欏圭洰涓殑緇濆璺緞
涓鑸敤request.getRealPath("/")鎴杛equest.getRealPath("/config/")
浣嗙幇鍦ㄤ笉鎻愬′嬌鐢╮equest.getRealPath("/")浜嗭紝澶у鍙瘯鐢⊿ervletContext.getRealPath("/")鏂規硶寰楀埌Web搴旂敤紼嬪簭鐨勬牴鐩綍鐨勭粷瀵硅礬寰?/p>
瑕佸彇寰梥rc鐨勬枃浠墮潪甯稿鏄擄紝鍥犱負src鏄粯璁ょ殑鐩稿鐩綍錛屾瘮濡備綘璇磋鍙栧緱src涓媍om鐩綍鐨則est.java鏂囦歡錛屼綘鍙渶瑕佽繖鏍峰氨澶熶簡
File f = new File(com/test.java);
浣嗗鏋滄垜瑕佸彇寰椾笉鍦╯rc鐩綍鎴栬匴ebRoot鐩綍涓嬬殑鏂囦歡鍛紝鑰屾槸瑕佷粠src鎴栬匴ebRoot鍚岀駭鐨勭洰褰曚腑鍙栧憿錛屾瘮濡傝doc鍚?/p>
鎴戠殑紜柟娉曟槸榪欐牱瀹炵幇鐨勶細
String path = this.getServletContext().getRealPath("/");
Properties p = new Properties();
p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
System.out.println(p.getProperty("driverName"));