做網(wǎng)站建設月收入多少大數(shù)據(jù)培訓班出來能就業(yè)嗎
我寫的程序,問題出現(xiàn)的也很神奇,就是我在上傳已經(jīng)存在在我指定目錄下的就可以成功,如果不存在,上傳仍是可以成功的,但是就會不顯示,但是你重啟服務器的時候又會再次顯示。這種問題出現(xiàn)的原因我們就需要了解javaweb項目運行的本質(zhì)了
編譯Java源代碼:
- 當你修改Java源代碼時,比如在IDE中保存文件時,IDE會自動重新編譯修改的Java文件。
- 編譯后的.class文件通常會被輸出到項目的輸出目錄,例如默認情況下是
out
目錄。部署到服務器:
- 一旦項目被編譯完成,你可以將項目部署到Web服務器上,比如Tomcat。
- 部署通常涉及將編譯后的文件以及其他資源文件(例如JSP、HTML、CSS、JavaScript等)復制到Web服務器的指定目錄中。
服務器運行:
- 一旦部署完成,你可以啟動Web服務器,讓項目在服務器上運行。
- Tomcat等Web服務器會將項目中的文件加載到內(nèi)存中,并提供對外服務。
當你在本地修改項目文件時,確實會改變項目文件的內(nèi)容,包括源代碼文件、配置文件等。但是,對于Java Web項目而言,服務器實際上是運行的編譯后的文件,而不是源代碼文件。因此,你在本地修改源代碼文件后,必須重新編譯項目并重新部署到服務器上,服務器才能加載最新的編譯后的文件,從而生效你的修改。
通常情況下,IDE會自動將編譯后的文件輸出到指定的目錄(例如out
目錄),而Web服務器則會加載這些編譯后的文件。因此,如果你修改了源代碼文件,但沒有重新編譯項目并重新部署到服務器上,服務器上運行的仍然是之前的編譯后的文件,所以你看到的效果不會發(fā)生變化。
因此,要使你的修改生效,你需要重新編譯項目并重新部署到服務器上,或者使用一些支持熱部署的工具來自動重新加載修改后的類文件。
上面是問題出現(xiàn)的原因:下面是我的問題與更正方案
C:/Users/86177/Desktop/ch3/jsp/img? ?這是我設置的錯誤目錄
C:/Users/86177/Desktop/ch3/out/artifacts/ch3_Web_exploded/jsp/img? 這是更正后的目錄
我的問題出現(xiàn)的原因也就是上述所說的,項目實際運行的是我編譯后的文件,我的程序在編譯的時候img目錄下有的圖片都會被編譯,但沒有的不會,而我上傳新的到這個目錄就無法被編譯,而找不到路徑,但我將上傳路徑設置為out目錄下就可以了,編譯后的.class文件會被復制到WEB-INF/classes
目錄下。實際我們在項目中使用的頁面還有靜態(tài)資源(圖片)都是在這個out目錄下尋找的,修改源代碼并不會影響這個out目錄,只有重新編譯才會,因此,即使IDE的out
目錄中的文件在IDE會話結(jié)束時被清除,編譯后的文件依然存在于部署目錄中,直到你重新部署或重新構(gòu)建項目。我重新部署項目又會顯示也是存在的這個問題的原因。