2

我正在创建我的第一个 WAR 文件。我一直在试验 ant buildfile 语法,我的 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.) 我应该在其中包含 .java 文件dist/WEB-INF/classes/...还是只在其中放置 .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 实例时似乎必不可少。myapp.xml在 WAR 文件中是必需的吗?或者 WAR 文件的结构是否做了myapp.xml原本会做的事情?

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

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

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

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

4

2 回答 2

3

我将尽我所能:

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 去哪里了?

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

于 2013-08-16T18:00:30.433 回答
1

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

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

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

于 2015-02-01T07:44:20.493 回答