我有一堆文本,XML和其他文件(即資源),我需要訪問使用Java Web應用程序中的servlet。例如,有一個xml文件,其中的一部分通過用戶查詢返回一個servlet。我正在使用Tomcat。存儲這些文件並從Java代碼訪問它們的最佳做法是什麼? 1)什麼是默認文件夾,我應該把它們放在哪裏,我需要把它們放到Web檔案中還是放入其中一個Jars中? 2)如何從java代碼訪問文件?我怎樣才能設置他們的路徑,以便它可以在任何環境下工作? P.S.我已經閱讀了許多與此主題相關的帖子,其中大多數建議將資源存儲在jar中,並使用java.lang.Class.getResourceAsStream(String)來訪問它們。這似乎很奇怪,因爲類和數據應該分開。在java web應用程序中存儲和訪問資源文件的最佳實踐
5
A
回答
7
使用類加載器加載靜態資源是完全正確的。這就是ResourceBundle用來加載國際化屬性文件的例子。
將它們放入WEB-INF/classes
以及您的類文件或WEB-INF/lib
中的一個jar中,然後使用ClassLoader加載它們,如您已閱讀的答案所示。
這並不禁止您將這些文件放置在與項目中的Java源文件不同的目錄中。構建過程應該確保將它們放在適合運行時的位置。 Maven和Gradle約定是將源文件放在src/main/java
之下,資源文件放在src/main/resources
之下。
相關問題
- 1. 存儲和訪問Wicket中的Bootstrap的最佳實踐
- 2. 在iOS應用程序中存儲數據的最佳實踐?
- 3. 存儲跨域Web服務訪問憑證的最佳實踐?
- 4. 在Web應用程序中存儲貸項餘額的最佳實踐
- 5. Web應用程序中安全問題的最佳實踐
- 6. 在Java Web應用程序中存儲DataSource資源的位置?
- 7. 最佳實踐 - Java EE Web應用程序中的txt文件位置
- 8. 使用兩個屬性訪問資源的REST最佳實踐
- 9. Docker,Web應用程序靜態文件。最佳實踐?
- 10. 通過Web應用程序下載文件[最佳實踐]
- 11. java web應用程序的最佳實踐
- 12. 在springboot java應用程序中訪問資源文件(xml)
- 13. 存儲和訪問oAuth access_token的最佳實踐?
- 14. 基於Web的應用程序的ASP.NET和C#最佳實踐?
- 15. 最佳實踐在Java Web應用程序中執行外部程序
- 16. 集成TDD和Web應用程序開發的最佳實踐?
- 17. Web應用程序的事件監聽器最佳實踐
- 18. 最佳實踐Hibernate樂觀鎖定和Web應用程序
- 19. 在Web應用程序中上傳XML文件的最佳實踐
- 20. WPF,MVVM和應用範圍的資源最佳實踐
- 21. JavaScript應用程序存儲最佳實踐
- 22. 最佳實踐:在Web應用程序中設置HTML類
- 23. 架構最佳實踐:Rails和移動/ Web應用程序
- 24. Web應用程序設計分層規則和最佳實踐
- 25. Web應用程序開發 - 什麼是文檔最佳實踐
- 26. 實體本地化在Java春季web應用程序的最佳實踐
- 27. Docker:Dockerize Tomcat應用程序 - 最佳實踐
- 28. ASP.NET Web應用程序中URL重定向的最佳實踐
- 29. ASP.NET Web應用程序中異常處理的最佳實踐
- 30. 存儲Java UI應用程序配置/設置的最佳實踐
1)如果我已經在WEB-INF/resources文件夾中有資源,該怎麼辦?它們被HTML頁面中的JavaScript使用。該頁面是WEB-INF/index.html,腳本引用使用相對路徑的資源。 2)我應該在哪裏存儲資源文件夾的路徑?在web.xml或其他靜態資源中是否有位置? – Alexander
WEB-INF中的資源無法從外部訪問,因此無法從瀏覽器加載WEB-INF中的JS文件。您可以使用ServletContext.getResourceAsStream()從webapp(包括WEB-INF)中的任何位置加載資源,但強制加載類訪問ServletContext。我不明白你的第二個問題。這是一個靜態資源。你爲什麼不在某些常量中硬編碼路徑? –
需要一個servlet實例來getContext,然後獲取資源或文件夾路徑。有沒有辦法做到這一點靜態沒有實例化任何東西?我的第二個問題與我應該存儲這種常量的地方有關。在一些與web相關的資源(如web.xml)中是否有位置(而不是在類源代碼中有一個常量)? – Alexander