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中文網其他相關文章!