Kriegsdateistruktur

Jede Webanwendung wird beim Hochladen auf den Webserver in eine einzelne WAR-Datei gepackt. WAR steht jetzt für Web Application Resources, obwohl es früher Web ARchive hieß. Tatsächlich handelt es sich hierbei um ein Zip-Archiv, das eine gepackte Webanwendung enthält.

So sieht der typische Inhalt einer Kriegsdatei aus:

/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

In der WAR-Datei befinden sich statische Webressourcen wie HTML-, CSS-, JS-Dateien usw. Es können auch Bilder, Videos und im Allgemeinen beliebige Dateien vorhanden sein. Sie können sich im Stammverzeichnis oder in Unterordnern befinden, das spielt keine Rolle. Tomcat serviert sie einfach, wenn sie dazu aufgefordert werden.

Nehmen wir an, Ihre Webanwendung wird unter dem Namen apple auf den Webserver geladen. Wenn http://localhost/apple/images/logo.png angefordert wird , gibt Tomcat die Datei /images/logo.png zurück .

Unabhängig davon ist der WEB-INF-Ordner zu erwähnen . Es dient dazu, Java-Code darin zu speichern. Tomcat wird seinen Inhalt nicht herausgeben.

/WEB-INF/classes/ Verzeichnis für kompilierte Nicht-JAR-Java-Klassen, einschließlich Servlet-Klassen und Ressourcendateien, die der Loader vor dem Ausführen der Anwendung benötigt
/WEB-INF/lib/ Ort zum Speichern von JAR-Bibliotheken
/WEB-INF/web.xml Bereitstellungsdeskriptor

War-Dateistruktur und Maven-Projekt

Kommen wir nun zur Verzeichnishierarchie des Maven-Projekts. Das vollständige Kataloglayout finden Sie im offiziellen Handbuch. Hier lernen wir es in einer etwas gekürzten Version kennen, ohne Testressourcen. Die Standard-Maven-Verzeichnishierarchie sieht also folgendermaßen aus:

src/main/java Quellcodes von Anwendungsklassen und Bibliotheken gemäß der allgemein anerkannten Pakethierarchie
src/main/resources Anwendungsressourcendateien: Datenbankeinstellungen, Lokalisierungsdateien usw.
src/main/webapp Webanwendungsressourcen (JSP-Dateien, Textdateien, Skripte usw.)

Wie Sie sehen, unterscheidet es sich erheblich von der Struktur der WAR-Datei, die Sie kennen. Beim Kompilieren einer Webanwendung geschieht jedoch lediglich das Verschieben und Verketten von Dateien in die in der Java EE-Spezifikation definierte Struktur.

Das Verzeichnis src/main/webapp definiert das Kontextstammverzeichnis der Webanwendung (bei der Bereitstellung auf einem Server ist das Kontextstammverzeichnis mit dem Namen der WAR-Datei identisch) und enthält bereits das Verzeichnis WEB-INF. Das heißt, der Inhalt von src/main/webapp wird vollständig in die Webanwendung übertragen.

Alle Ihre Java-Klassen werden in Klassendateien kompiliert und unter Beibehaltung ihrer Paketstruktur in das Verzeichnis /WEB-INF/classes/ verschoben . Die JARs der enthaltenen Bibliotheken, die wie oben definiert in den Abhängigkeiten von Maven pom.xml definiert sind, werden in das Verzeichnis /WEB-INF/lib/ verschoben .

Anwendungsressourcen src/main/resources werden in den Klassenpfad der Anwendung verschoben, insbesondere in dasselbe /WEB-INF/classes/ -Verzeichnis .

Schauen Sie sich zur Verdeutlichung dieses Diagramm an, das Ihnen hilft zu verstehen, wie und was beim Erstellen eines Projekts wohin geht:

Kriegsdateigerät