將文件放在Tomcat Servlet應用程序中的位置,以便它們對頁面相對可見?Servlet/Tomcat相對文件路徑
更多細節: 我同時使用外部庫開發的servlet頁。該庫大量依賴外部加載的XML文件(相對文件路徑)。所以我需要將這些XML文件放在servlet的運行目錄的中。
Tomcat服務器中有沒有辦法可以訪問文件相對?
將文件放在Tomcat Servlet應用程序中的位置,以便它們對頁面相對可見?Servlet/Tomcat相對文件路徑
更多細節: 我同時使用外部庫開發的servlet頁。該庫大量依賴外部加載的XML文件(相對文件路徑)。所以我需要將這些XML文件放在servlet的運行目錄的中。
Tomcat服務器中有沒有辦法可以訪問文件相對?
當Web應用程序部署到Tomcat,所述web應用程序的根最終被$ CATALINA_HOME/web應用/ YOUR_WEB_APP/
這樣,如果使用servlet訪問位於內的路徑上的XML文件Web應用程序的根目錄,你可以使用以下命令:
request.getServletContext().getResourceAsStream("PATH/TO/YOUR/XML_FILE.xml")
這將加載XML文件作爲InputStream
。當然,如果要訪問該文件本身,可以始終使用getResource(String resource)
方法以獲得URL
,從該File
對象可以像這樣(替代方法包括)來獲得:
File f;
try {
f = new File(url.toURI());
} catch(URISyntaxException e) {
f = new File(url.getPath());
}
編輯:爲了使它們相對於Web瀏覽器可見,只需將它們放在./WEB-INF和./META-INF目錄中。
如果您正在討論的這個庫將在類路徑中搜索文件(如Hibernate或Log4J會這樣做),則必須將您的XML文件放入WEB-INF中。不過,我建議你不要手動執行此操作。您可以將該文件放在應用程序的源目錄中,這將確保文件部署在正確的位置。
這是一個老問題。我正在開發Tomcat 9.我以Tomcat安裝目錄爲基礎取得了很大的成功。 (CATALINA_HOME)例如ROOT中文件的相對路徑是「webapps/ROOT/someDir/fileName」
抱怨重複答案的地方是處理重複的問題。
您可以使用'System.getProperty(「user.dir」)'獲取當前工作目錄。打印它,你知道在哪裏把你的文件... –
從那裏,你可以訪問整個文件結構。好的評論莫里茨。 – Ewald
是的,我已經完成了simillar的想法,我已經寫入該目錄中的文件,但它原來是一個臨時目錄,tomcat創建... – Betamoo