Spring MVC 搭建過程中web.xml配置引入文件的路徑問題


為啥要說一下這么low的問題,因為我是一個比較low的人,哈哈。本來我技術有限,沒事干自己撘個環境找找樂趣,結果被各種基礎問題,弄的一臉蒙蔽。算了不多說,直接說問題。

1、首先說一下java編譯后的文件,正常來說我們編寫的文件一般都是java文件,但實際上eclipse會幫我們編譯成.class文件(在project下有個自動編譯),沒有編譯的話,Project->Build Project 來編譯當前的項目

2、上面說的都是很簡單的事情,但是簡單的再延伸,就可能出一點問題了,重申一下,我比較low。在web.xml中會配置一些,需要引入的文件,比如jdbc配置,密碼配置。而這些配置文件,需要有web.xml去找到這些文件,然后加載進來。這樣,問題就來了,他是怎么找配置文件的。注意,正常項目在運行中是運行的class文件,是編譯后的文件,也就是說會在編譯后的文件夾下找文件,所以項目的目錄結構很容易誤導觀眾。

3、如果你把需要引入的配置文件,放在了web-info下,那么恭喜你,看到這,你不用往下看了,因為你可能不會遇到路徑問題,哈哈。

4、我最開始放在web-info下,啥事沒有,后來想把文件放在src下面,結果,怎么配置也找不到配置文件,我就郁悶了。哎,只能說還是技術不到家。此時用到上面說的項目運行時去編譯后的文件夾下找文件,而最開始配置本來就在web-info下,項目運行時,剛好去web-info下和配置的class文件存放目錄下找一系列文件,這就不會出錯。但是現在移動配置文件位置了,之前默認的class文件存放位置沒有改變,會繼續使用,但是web-info下沒有了自己配的文件,就會導致一直找不到配置文件。

5、原因都清楚了,就是class文件存儲位置,和配置文件位置,沒有配置在web-info目錄下。

6、在修改前,把配置文件做一個備份(web.xml和所有導入的jar包)

7、右鍵項目——properties——java build path——Source ,此時就看到編譯路徑了,這是我修改后的myFirstBlood/WebContent/WEB-INF/classes。(新發現的大陸:在web.xml中使用的classpath就是指代的這個路徑,兩者是相等關系,就這個也快搞死我了)修改后之前的web.xml和jar包會丟失。需要重新來過一次。然后再去web.xml中配置引入文件的路徑就可以了。

8、我說的可能有瑕疵,忘大神指正,勿噴啊。

參考:

spring mvc的web.xml中這個地方的classpath是什么意思?

首先這個是 web.xml方式定義參數傳給Servlet。

因此,<param-value></param-value>的解釋是接收這個參數的servlet執行的。
dispatchservlet的這個參數是定義配置文件的位置的。

而spring中對資源文件的處理做了抽象化,可以用符合 URI規范的方式聲明文件位置,
具體的實現類會解析這個字符串,(可以看spring的Resource相關的文檔)
根據里面的聲明 來使用合適的方式讀取。

1、classpath:開頭的意思是說從 classpath中尋找目標文件。

web application的classpath包含 WEB-INF/lib下的所有jar包和WEB-INF/classes目錄

2、編譯后的class路徑。/WEB-INF/classes/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM