簡體   English   中英

Servlet / Tomcat相對文件路徑

[英]Servlet/Tomcat relative file path

將文件放在Tomcat Servlet應用程序中的位置,以便頁面相對可見?

詳細信息:我在使用外部庫的同時開發servlet頁面。 該庫很大程度上取決於外部加載的XML文件 (相對文件路徑)。 因此,我需要將這些XML文件放在servlet的運行目錄中。

在Tomcat服務器中是否有一種方法可以相對訪問文件?

將Web應用程序部署到Tomcat時,該Web應用程序的根目錄最終為$ CATALINA_HOME / webapps / YOUR_WEB_APP /

這樣,如果使用servlet訪問位於Web應用程序根目錄內的路徑上的XML文件,則可以使用以下命令:

request.getServletContext().getResourceAsStream("PATH/TO/YOUR/XML_FILE.xml")

這會將XML文件作為InputStream加載。 當然,如果您想訪問文件本身,則始終可以使用getResource(String resource)方法來獲取URL ,從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。 但是,我建議您不要手動執行此操作。 您可以將文件放在應用程序的源目錄中,這將確保文件部署在正確的位置。

這是一個老問題。 我正在使用Tomcat9。以Tomcat安裝目錄為基礎,我已經相當成功。 (CATALINA_HOME)例如,ROOT中文件的相對路徑為“ webapps / ROOT / someDir / fileName”

抱怨重復答案的地方是處理重復問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM