structure du fichier war

Chaque application Web, lorsqu'elle est téléchargée sur le serveur Web, est regroupée dans un seul fichier .war. WAR signifie désormais Web Application Resources, alors qu'il s'agissait auparavant de Web ARchive. En fait, il s'agit d'une archive zip qui contient une application Web packagée.

Voici à quoi ressemble le contenu typique d'un fichier 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

Le fichier war contient des ressources Web statiques telles que des fichiers .html, .css, .js, etc. Il peut également y avoir des images, des vidéos et en général des fichiers. Ils peuvent être à la racine ou dans des sous-dossiers, peu importe. Tomcat les servira simplement s'ils sont demandés.

Disons que votre application web est chargée sur le serveur web sous le nom apple, puis lorsque http://localhost/apple/images/logo.png est demandé , Tomcat renverra le fichier /images/logo.png .

Séparément, il convient de noter le dossier WEB-INF . Il est conçu pour y stocker du code Java. Tomcat ne dévoilera pas son contenu .

/WEB-INF/classes/ répertoire pour les classes Java non-JAR compilées, y compris les classes de servlet et les fichiers de ressources nécessaires au chargeur avant d'exécuter l'application
/WEB-INF/lib/ endroit pour stocker les bibliothèques de pots
/WEB-INF/web.xml descripteur de déploiement

structure de fichier war et projet maven

Passons maintenant à la hiérarchie des répertoires du projet Maven. Vous pouvez voir la mise en page complète du catalogue dans le manuel officiel. Nous allons ici en prendre connaissance dans une version quelque peu abrégée, hors ressources de test. Ainsi, la hiérarchie de répertoires standard de Maven ressemble à ceci :

src/principal/java codes sources des classes d'application et des bibliothèques conformément à la hiérarchie des packages généralement acceptée
src/main/ressources fichiers de ressources de l'application : paramètres de la base de données, fichiers de localisation, etc.
src/main/webapp ressources d'applications Web (fichiers JSP, fichiers texte, scripts, etc.)

Comme vous pouvez le voir, il diffère considérablement de la structure du fichier WAR que vous connaissez. Mais ce qui se passe réellement lors de la compilation d'une application Web consiste simplement à déplacer et à concaténer des fichiers dans la structure définie dans la spécification Java EE.

Le répertoire src/main/webapp définit la racine de contexte de l'application Web (lorsqu'elle est déployée sur un serveur, la racine de contexte est identique au nom du fichier WAR) et contient déjà le répertoire WEB-INF. Autrement dit, le contenu de src/main/webapp est entièrement transféré vers l'application Web.

Toutes vos classes Java sont compilées dans des fichiers de classe et, en gardant leur structure de package, sont déplacées dans le répertoire /WEB-INF/classes/ . Les fichiers JAR des bibliothèques incluses, qui sont définis dans les dépendances Maven pom.xml comme nous l'avons défini ci-dessus, sont déplacés vers le répertoire /WEB-INF/lib/ .

Les ressources de l'application src/main/resources sont déplacées vers le chemin de classe de l'application, plus précisément vers le même répertoire /WEB-INF/classes/ .

Pour que ce soit parfaitement clair, regardez ce diagramme, qui vous aidera à comprendre comment et ce qui se passe où lors de la construction d'un projet :

périphérique de fichier war