現在企業開發中,我們都會創建一個javaWeb工程,在eclipse中指的是新建一個dynamic web project,創建完工程之後,我們在IDE中大體看到如下的工程目錄:
我們主要關心的文件夾有src、WebContent、WEB-INF、test等。
src:存放我們寫的java文件,以包來區分相同的文件
WebContent:發布的文件夾
WEB-INF:被設計為安全的文件夾,如果一些內容必須通過後台才能被訪問,則存放在此文件夾下
test:用戶創建的用戶目錄,可以來存放具體的前台文件(html、jsp等);另,還可以創建更多的文件夾,存放不同種類的文件
上面是我們在IDE中看到的web工程的結構,那麼把web工程發布到tomcat下的文件路徑是什麼樣子的呢,如下:
我們看到發布完的路徑為項目名稱 ,下邊有META-INF、test、WEB-INF三個文件夾,可以清楚的明白,發布完之後是項目名稱,然後是WebContent(開發環境下文件夾)下的文件,而WebContent沒有顯示,那麼一定會奇怪,我的class文件呢,別著急,請看下圖:
我們的class文件都放在了WEB-INF下的classes文件夾下,把包的路徑轉化為了文件路徑,如com.cn.my轉化為com/cn/my。
你會疑惑,如果我在src下有配置文件那麼,我的配置文件發布完放在什麼地方了,根據上面的解釋,src對應著classes文件夾,那麼src下的配置文件會放在classes文件夾下。
下面說明在web.xml文件中配置的<context-param>標簽,經常會看到如下的配置:
1 <context-param> 2 <param-name>log4j-properties-location</param-name> 3 <param-value>/WEB-INF/log4j.properties</param-value> 4 </context-param>
這裡配置的<param-value>值是指以相對路徑來說的,以上圖的/WEB-INF/log4j.properties來說,指的是發布完之後的路徑,其中“/”指的是根路徑,即Log4j(項目名稱);根路徑下的WEB-INF文件夾下的log4j.properties文件,;那麼我們在開發過程中(IDE)中要把這個文件放在哪裡呢,從上邊的解釋我們知道WebContent下的文件在發布完之後會保持原先的結構,那麼可以得出在IDE中的位置為:WebContent/WEN-INF/log4j.properties。
很多時候我們會把配置文件放在src下,如果放在src下上邊的配置改是怎麼樣的呢,
一、放在src根路徑下,則上面的配置變成如下:
<context-param> <param-name>log4j-properties-location</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param>
二、在src下創建一個文件夾,則配置如下:
<context-param> <param-name>log4j-properties-location</param-name> <param-value>/WEB-INF/classes/my/config/log4j.properties</param-value> </context-param>
在開發中我們還經常看到這樣的配置,如下
<param-name>log4j-properties-location</param-name> <param-value>classpath:log4j.properties</param-value> </param-name>
classpath指的就是classes文件夾,這裡指的是src根路徑下的log4j.properties文件,也可以使用classpath:test/my/log4j.properties
有不對之處請指教!