现在企业开发中,我们都会创建一个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
有不对之处请指教!