」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何透過ServletContext存取WAR/WEB-INF目錄下的資源?

如何透過ServletContext存取WAR/WEB-INF目錄下的資源?

發佈於2024-12-21
瀏覽:731

How to Access Resources in the WAR/WEB-INF Directory with ServletContext?

透過ServletContext存取WAR/WEB-INF目錄中的資源

簡介:

Java Web 應用程式通常將重要資源儲存在WAR/WEB-INF 目錄中。要存取這些資源,開發人員可以利用 ServletContext API。

問題:

如何創建位於 WAR/WEB-INF中的資源的正確路徑資料夾,例如"/war/WEB-INF/test/foo.txt"?

答案:

建置WAR/中的資源路徑主要有兩種方法使用ServletContext的WEB-INF目錄:

1. getRealPath()方法:

如果 WAR 文件已展開為一組文件,則可以使用 getRealPath() 方法:

ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/test/foo.txt");

這將傳回資源的完整系統路徑。

2. getResource() 或getResourceAsStream() 方法:

無論WAR 檔案是否展開,都可以使用這些方法:

ServletContext context = getContext();
URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt"); // for URL
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt"); // for input stream

附加說明:

  • 範例程式碼中提到的getContext() 方法是特定於應用程式的。在 JSP 頁面中,它可用作“上下文”,而在 servlet 中,它是在初始化期間從 ServletConfig 獲取的。
  • 如果 Servlet 容器不提取 WAR 文件,則 getRealPath() 方法可能不起作用。
  • getResource() 和 getResourceAsStream() 方法可靠,適用於所有部署情境。
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3