首頁 >Java >java教程 >`ServletContext.getRealPath('/')` 有什麼作用,為什麼我應該避免在現代 Java EE 應用程式中使用它?

`ServletContext.getRealPath('/')` 有什麼作用,為什麼我應該避免在現代 Java EE 應用程式中使用它?

Patricia Arquette
Patricia Arquette原創
2024-12-22 13:11:10655瀏覽

What does `ServletContext.getRealPath(

servletcontext.getRealPath("/") 是什麼意思以及何時應該使用它?

簡介

;

在Java servlet 應用程式中, ServletContext#getRealPath() 方法用於將相對Web 內容路徑轉換為絕對磁碟檔案系統路徑。指定的路徑可以是 Web 內容中的檔案或目錄。但是,應謹慎使用此方法,並且在現代 Java EE 開發中通常不鼓勵使用此方法。

getRealPath("/")

的使用

/ getRealPath("/") 中表示網頁內容目錄的根目錄。它是包含 Web 應用程式的 web.xml 檔案的目錄的絕對檔案系統路徑。例如,在以下專案結構中:

YourWebProject/
    src/
    :
    web/
        META-INF/
        WEB-INF/
        index.jsp
        login.jsp
        :

如果執行getRealPath("/"),它將傳回Web 目錄的檔案系統路徑,例如/path/to/server/work /folder/some. war/web.

警告與限制

雖然getRealPath()在某些情況下很有用,但它有一些限制,通常不鼓勵這樣做,原因如下:

  • 寫入不是persist: 對使用getRealPath() 寫入的檔案所做的變更將在重新部署WAR 期間遺失
  • 擴充依賴: getRealPath() 的可靠性取決於伺服器擴充 WAR 檔案的配置。如果 WAR 未擴及磁碟檔案系統,getRealPath() 可能會傳回不正確或空路徑。
  • 無可移植用例: 通常有更便攜、更可靠的替代方案來使用getRealPath ().

替代方案getRealPath()

不要使用getRealPath(),請考慮以下替代方案:

  • 使用ServletContext#getResourceAsStream() 取得Web 中資源的InputStream content.
  • 使用ServletContext#getResourcePaths() 檢索可用的清單資源()路徑。
  • 使用 ServletContext#getResource() 取得資源的 URL。
  • 有關文件上傳或臨時文件創建,請參閱下面的「另請參閱」連結。

另請參閱

  • [getResourceAsStream() 與FileInputStream](https://stackoverflow.com/questions/4212943/resource-as-inputstream-in-java-best-practice)
  • [建議方法將上傳的檔案保存在servlet中application](https://stackoverflow.com/questions/5797716/recommulated-way-to-save-uploaded-files-in-a-servlet-application)
  • [在重新部署時保留資料的簡單方法Java EE 7網路應用程式](https://stackoverflow.com/questions/11736935/simple-ways-to-keep-data-on-redeployment-of-java-ee-7-web-application)

以上是`ServletContext.getRealPath('/')` 有什麼作用,為什麼我應該避免在現代 Java EE 應用程式中使用它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn