idea中web工程路徑問題歸納總結

昨天,在小小的探索下,整理出一篇博文:Web開發筆記(五):idea路徑問題(classloader讀取文件),提前說明一下,昨天寫的這篇有一點點小問題,在今早被發現了,於是,經過一早上的摸索,終於明白了idea中讀取文件的路徑問題了。這篇博客對昨天的進行一些修改,並進行一個小小的總結。

前提

創建一個web工程:IntelliJ IDEA 配置Tomcat 運行Web項目

我創建的目錄結構如下:

注意:把前端頁面,資源文件都存放在web目錄下!!!WEB-INF目錄只有classes,lib,web.xml三個文件,一定注意,要不後面會出大問題。

讀取各種資源文件時的路徑問題

file目錄下有config.properties文件,該怎麼填寫路徑進行讀取呢?

1、getServletContext().getResourceAsStream("file/config.properties");

注意:這裏給出的路徑是相對路徑!那麼,既然是相對路徑,那是相對誰呢?看下圖:

idea的web工程裏,這個路徑就是相對路徑的根路徑!

因爲當tomcat運行後,會生成這個out目錄:

2、getServletContext().getRealPath("file/config.properties");

這個方法讀取文件的時候相對路徑的寫法和上面的一樣。

3、類加載器讀取文件

類加載器讀取文件就不一樣了。如果this.getClass().getClassLoader().getResourceAsStream("file/config.properties");這樣寫,會發生錯誤。因爲類加載器的路徑在這:

所以,我有個簡單的方法。

這樣操作,就是讓file目錄成爲一個根目錄。這樣,上面的錯誤代碼就可以寫爲this.getClass().getClassLoader().getResourceAsStream("config.properties");

總結:

idea的目錄確實很讓人費解,我也是花了很多心思,才懂得了一些,不知道我的這一套總結,在以後的編程會不會出錯。不過目前這樣用時可以的。

1、前端頁面,資源文件等,放在web目錄下,WEB-INF目錄只有classes,lib,web.xml三個文件。

2、相對路徑,相對的是

3、類加載器的路徑是:

4、我的建議是,每次寫路徑都以“/Servlet_war_exploded”開頭,然後根據實際情況補充後面的路徑。

  “/Servlet_war_exploded”需要與設置的應用上下文相對應。

 

如有錯誤,還請指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章