戰爭文件結構

每個 Web 應用程序在上傳到 Web 服務器時都被打包到一個 .war 文件中。WAR 現在代表 Web Application Resources,儘管它以前是 Web ARchive。事實上,這是一個包含打包 Web 應用程序的 zip 存檔。

war 文件的典型內容如下所示:

/index.html
/guestbook.jsp
/images/logo.png
/js/jquery.js
/WEB-INF/web.xml
/WEB-INF/classes/com/codegym/Util.class
/WEB-INF/classes/com/codegym/MainServlet.class
/WEB-INF/classes/application.properties
/WEB-INF/lib/util.jar
/META-INF/MANIFEST.MF

war文件裡面是.html、.css、.js文件等靜態web資源。也可以有圖片、視頻和一般的任何文件。它們可以位於根目錄或子文件夾中,這無關緊要。如果需要,Tomcat 將簡單地提供它們。

假設您的 Web 應用程序以名稱 apple 加載到 Web 服務器上,然後當請求http://localhost/apple/images/logo.png時,Tomcat 將返回文件/images/logo.png

另外,值得注意的是WEB-INF 文件夾。它旨在將 Java 代碼存儲在其中。Tomcat不會給出其內容。

/WEB-INF/類/ 已編譯的非 JAR Java 類的目錄,包括運行應用程序之前加載器所需的 servlet 類和資源文件
/WEB-INF/lib/ 存放jar庫的地方
/WEB-INF/web.xml 部署描述符

war文件結構和maven項目

現在讓我們轉到 Maven 項目的目錄層次結構。您可以在官方手冊中看到完整的目錄佈局。在這裡,我們將以略微簡化的版本熟悉它,不包括測試資源。因此,標準的 Maven 目錄層次結構如下所示:

源碼/主/java 根據普遍接受的包層次結構的應用程序類和庫的源代碼
源代碼/主要/資源 應用程序資源文件:數據庫設置、本地化文件等。
源代碼/主/網絡應用程序 Web 應用程序資源(JSP 文件、文本文件、腳本等)

如您所見,它與您所知道的 WAR 文件的結構有很大不同。但編譯 Web 應用程序時實際發生的只是將文件移動和連接到 Java EE 規範中定義的結構中。

src/main/webapp目錄定義了 Web 應用程序的上下文根(當部署到服務器時,上下文根與 WAR 文件的名稱相同)並且其中已經包含 WEB-INF 目錄。即src/main/webapp的內容全部轉移到 web application 中。

您所有的 Java 類都被編譯成類文件,並在保持其包結構的情況下被移動到/WEB-INF/classes/目錄中。我們上面定義的 Maven pom.xml 依賴項中定義的包含庫的 JAR 被移動到/WEB-INF/lib/目錄。

應用程序資源src/main/resources被移動到應用程序的類路徑,特別是相同的/WEB-INF/classes/目錄。

為了完全清楚,請查看此圖,這將幫助您了解構建項目時的方式和內容:

war文件設備