遇到問題介紹:項目中上傳文件到服務器。如果使用tomcat下的目錄作為上傳圖片的路徑,則每次重啟服務器圖片將消失。
【因為開發工具的項目中沒有該圖片,每次重啟服務器重新部署的時候將會刪除開發工具的項目中不存在的文件】
解決:可以使用tomcat的配置文件將某個請求 映射到 物理路徑下 ,完成圖片的回顯。
如,請求http://localhost:8080/upload/resources/1.jpg
,讓其自動去本機D盤D:/upload/resources
路徑下尋找
具體操作:使用Tomcat虛擬路徑
操作步驟: 找到Tomcat/conf/server.xml文件
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- access log PRocesses all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/> <Context docBase="MavenWebProject" path="/MavenWebProject" reloadable="true" source="org.eclipse.jst.jee.server:MavenWebProject"/> <Context docBase="javaSE-JS" path="/JavaSE-JS" reloadable="true" source="org.eclipse.jst.jee.server:JavaSE-JS"/> <!-- 這里添加以下語句--> <!-- To Solve upload file --> <Context path="/upload/resources/" docBase="D:/upload/resources/"></Context> </Host>重啟Tomcat,這樣當請求http://localhost:8080/upload/resources/1.jpg
, 服務器會自動去本機D盤D:/upload/resources
路徑下尋找圖片1.jpg.
這里處理的是動態上傳圖片并且進行圖片回顯。
如果是Eclipse下項目中的靜態資源文件,部署的時候會同時部署到Tomcat/webapps(Eclipse默認的項目發布目錄不是為Eclipse自身下的一個文件夾,請手動修改)下。
可以直接請求,不用進行目錄映射。
題外話:
如果Tomcat重啟后,發現修改的server.xml自動還原了。
兩種解決思路:
① 修改Eclipse工具下的Servers里面的server.xml , 使其保證與你想要修改成的目標一致。
因為自動發布的時候,會默認加載這里面的context.xml 和 server.xml !
② 取消自動發布 !
新聞熱點
疑難解答