WAR文件的规划结构

时间:2013-08-16 17:02:30

标签: java eclipse java-ee servlets war

我正在创建我的第一个WAR文件。我一直在尝试使用ant buildfile语法,我的构建文件的第一部分从我的Eclipse项目获取内容并将其放入/dist文件夹,然后在后续步骤中将其压缩到WAR文件中。

我需要帮助构造输出,以便WAR文件在Tomcat 7服务器执行的正确位置具有所有必需的内容。请给我一些松懈,因为这是我的第一个WAR文件。

我的构建文件的当前草稿生成一个具有以下结构的dist文件夹:

dist/META-INF/MANIFEST.MF  
dist/WEB-INF/classes/myapp/package1/ (contains 12 .class files)  
dist/WEB-INF/classes/myapp/package2/ (contains 7 .class files)  
dist/WEB-INF/jsp (contains 5 .jsp files)  
dist/WEB-INF/lib (contains 16 .jar files)  
dist/WEB-INF/web.xml  
dist/image1.gif  
dist/image2.gif  
dist/image3.gif  
dist/image4.gif 

我如何更改结构以便Tomcat 7服务器可以使用生成的WAR文件向最终用户提供我的Web应用程序?

具体而言,
    1.)我应该在dist/WEB-INF/classes/...中包含.java文件还是只将.class文件放在那里?
    2.)我应该将JRE系统库JAR添加到dist/WEB-INF/lib吗?这些系统JAR位于我的Eclipse工作区中,但我不知道在WAR文件中是否需要它们     3.)web.xml在正确的位置?
    4.)我的.gif文件应该保留在根目录中吗?     5.)我的.jsp文件是否在正确的位置?
    6.)myapp.xml去哪儿了? myapp.xml位于Eclipse工作区的根目录中,在将myapp加载到Tomcat服务器的localhost实例时似乎很重要。 WAR文件中是否需要myapp.xml?或者WAR文件的结构是否会执行myapp.xml否则会执行的操作?

请注意,我的servlet类控制对JSP文件的所有访问,每个servlet都使用以下语法实例化自己的JSP:

RequestDispatcher jsp = context.getRequestDispatcher("/WEB-INF/jsp/home.jsp");  

对网站内容的所有访问都是通过web.xml的servlet映射定义的URL。

提前感谢您的帮助。我正在尝试正确地学习第一个,以便我可以在第一次做好后续的WAR文件。我相信其他人以后需要这些答案作为资源。

2 个答案:

答案 0 :(得分:4)

我会尽我所能:

1.。)我应该在dist / WEB-INF / classes /中包含.java文件,还是只在那里放入.class文件?

这里你只需要.class文件。

2.。)我应该将JRE系统库jar添加到dist / WEB-INF / lib中吗?

不应该需要。

3.。)web.xml在正确的位置?

看起来不错。

4。)我的.gif文件应该保留在根目录中吗?

虽然没有必要,但我更喜欢“image.jar”(或“resource.jar”或其他什么)以保持整洁。

5.。)我的.jsp文件是否在正确的位置?

不确定,但我认为jsp目录通常会在WEB-INF之外的某个级别,直接在dist文件夹中。

6。)myapp.xml在哪里?

我不知道这是什么,所以我不能说。

答案 1 :(得分:1)

在这里寻找一个很好的解释:

http://www.openscope.net/2010/01/25/war-deployment-file-structure/

具体来说,只有.class文件进入/ classes目录,只有.jars进入/ lib目录。除了那些和web.xml之外,其他所有内容(即非Java内容,如html,css,js,其他文件)都可以放在根目录中,并且可以在部署的应用程序URL的根URL访问。