JavaEE Web 工程/项目 目录结构
Contents
JavaEE Web 工程/项目 目录结构
Maven 标准目录结构
好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:
src/main/java
Application/Library sources
src/main/resources
Application/Library resources
src/main/webapp
Web application sources
src/test/java
Test sources
src/test/resources
Test resources
src/main/filters
Resource filter files
src/main/assembly
Assembly descriptors
src/main/config
Configuration files
src/main/scripts
Application/Library scripts
src/test/filters
Test resource filter files
src/site
Site
LICENSE.txt
Project's license
NOTICE.txt
Notices and attributions required by libraries that the project depends on
README.txt
Project's readme
使用目录模板,可以使 pom.xml 更简洁。因为 Maven2 已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以 resources 目录为例:
- src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。
- src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。
这些动作在 Maven1 中,是需要在 maven.xml 中使用或来完成的。如今,完全不需要在pom.xml中指定就能够自动完成。在src和test都使用resources,方便构建和测试,这种方式本就已是前人的经验。通过使用Maven2,使这个经验在开发团队中得到普及。
创建标准目录模板,可以通过如下命令:
mvn archetype:create -DgroupId=com.codeline.commons -DartifactId=codelineCommons
groupId和artifactId的含义与Maven1中的含义一样,参数artifactId的值会作为项目根目录的名字。除了建立相应的目录之外,Maven2还会创建缺省的pom.xml。
Maven2也考虑到: 不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
在Eclipse中只要创建一个Dynamic Web Project,就可以根据创建向导创建出一个典型Java Web站点的目录结构。除非有特殊需要,在大多数情况下都没有必要修改这个目录结构,这也是Web容器的缺省目录结构,我们只要直接使用即可。一般的目录结构如下:
WebContent (站点根目录)
|-META-INF (META-INF文件夹)http://www.wiloon.com/?p=6102
| |-MANIFEST.MF (MANIFEST.MF配置清单文件)
|-WEB-INF (WEB-INF文件夹)
| |-web.xml (站点配置web.xml)
| |-lib (第三方库文件夹)
| | |-*.jar (程序需要的jar包)
| |-classes (class文件目录)
| |-…*.class (class文件)
|- (自定义的目录)
| |-*.jsp,*.js,*.css,*images (自定义的资源文件)
|- (自定义的资源文件)
1.WebRoot(WebContent)下是发布到服务器上的内容。
2.META-INF是工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生成。
3.文件web.xml: 完成servlet在web容器的注册。web.xml是Web应用程序的部署描述文件,是用来给Web服务器解析并获取Web应用程序相关描述的。
不按照sun公司的规范做应用web程序的结构,web容器找不到,比如,xml文件写错了,启动tomcat的时候会报错
4.凡是客户端能访问的资源(*.html,*.jpg)必须跟WEB-INF在同一目录。即放在Web根目录下的资源,从客户端是可以通过URL地址直接访问。
- 切忌: 凡是WEB-INF里面的文件都不能被客户端直接访问(比如隐藏的信息)。WEB-INF目录下的资源对用户来说是不可见的,而对Web服务器来说则没有这样的限制。
例如在WEB-INF下的index.htm,客户端无法与对待其他文件夹内的信息一样,通过http://yourserver/yourwebapp/WEB-INF/index.htm访问。WEB-INF文件夹是禁止通过URL访问的。
- 在WEB-INF目录的classes及lib子目录下,都可以存放Java类文件。在运行时,Servlet容器的类加载器先加载classes目录下的类,再加载lib目录下的JAR文件 (Java类库的打包文件) 中的类,jar包是许多class文件的集合。因此,如果两个目录下存在同名的类,classes目录下的类具有优先权。
Tomcat固定的目录结构
/bin
存放在Windows平台以及Linux平台上启动和关闭Tomat的脚本文件
/conf
存放Tomat服务器的各种配置文件, 其中最重要的文件是Server.xml
/server
包含3个子目录: classes,lib和webapps
/server/lib
存放Tomat服务器所需的Jar文件
/server/webapps
存放Tomat自带的两个Web应用: admin应用和manager应用
/common/lib
存放Tomat服务器以及所有Web应用都可以访问的Jar应用
/share/lib
存放所有Web应用都可以访问的Jar文件
/logs
存放Tomat的日志文件
/webapps
当发布Web应用时,默认情况下把Web应用文件放于此目录下
/work
Tomcat把由Jsp生成的Servlet放于此目录下
http://www.cnblogs.com/haippy/archive/2012/07/05/2577233.html
http://blog.csdn.net/ystyaoshengting/article/details/6204886
Author -
LastMod 2014-01-01