在使用 Struts2 + XWork2 開發 Java Web 專案時,採用 Eclipse 部署至 Tomcat 的預設 wtpwebapps 目錄。上傳的圖片儲存在部署路徑下的絕對路徑,資料庫存儲相對路徑供前端 <img src> 使用。但每次 Tomcat 重新發布(重新部署)專案時,wtpwebapps 目錄會被清空重建,導致已上傳的圖片遺失。
在 Tomcat 的 conf/server.xml 中,於 <Host> 標籤內新增 <Context> 元素,將圖片儲存目錄映射為獨立的虛擬路徑,使其不隨 Web 應用重新部署而受影響。
tomcat/conf/server.xml。<Host name="localhost" ...> 區塊內加入:<Context path="/images" docBase="E:/images" debug="0" reloadable="false"/>
path="/images":對外訪問的虛擬路徑(如 https://localhost:8080/images/xxx.jpg)。docBase="E:/images":實體儲存目錄,建議放在專案外部的固定磁碟路徑。reloadable="false":避免 Tomcat 監視該目錄變更而觸發重載。E:/images(或對應的 docBase 路徑)。<img src="/images/xxx.jpg"> 即可正常顯示。生產環境建議進一步採用分散式檔案系統或雲端儲存服務,並透過資料庫記錄檔案元資料(路徑、大小、上傳時間等),實現更健壯的檔案管理架構。