structura fișierelor de război

Fiecare aplicație web, atunci când este încărcată pe serverul web, este ambalată într-un singur fișier .war. WAR înseamnă acum Resurse pentru aplicații web, deși înainte era Web ARchive. De fapt, aceasta este o arhivă zip care conține o aplicație web ambalată.

Iată cum arată conținutul tipic al unui fișier război:

/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

În interiorul fișierului război se află resurse web statice, cum ar fi fișierele .html, .css, .js și așa mai departe. De asemenea, pot exista imagini, videoclipuri și, în general, orice fișiere. Pot fi în rădăcină sau în subfoldere, nu contează. Tomcat le va servi pur și simplu dacă sunt solicitate.

Să presupunem că aplicația dvs. web este încărcată pe serverul web sub numele Apple, apoi atunci când este solicitat http://localhost/apple/images/logo.png , Tomcat va returna fișierul /images/logo.png .

Separat, merită remarcat folderul WEB-INF . Este conceput pentru a stoca cod Java în el. Tomcat nu își va da conținutul.

/WEB-INF/classes/ director pentru clasele Java non-JAR compilate, inclusiv clasele servlet și fișierele de resurse necesare încărctorului înainte de a rula aplicația
/WEB-INF/lib/ loc pentru a stoca biblioteci de borcane
/WEB-INF/web.xml descriptor de implementare

Structura fișierelor de război și proiectul Maven

Acum să trecem la ierarhia directoarelor proiectului Maven. Puteți vedea aspectul complet al catalogului în manualul oficial. Aici ne vom familiariza cu acesta într-o versiune oarecum prescurtată, excluzând resursele de testare. Deci, ierarhia standard de directoare Maven arată astfel:

src/main/java codurile sursă ale claselor de aplicații și ale bibliotecilor în conformitate cu ierarhia de pachete general acceptată
src/main/resources fișiere de resurse ale aplicației: setările bazei de date, fișierele de localizare etc.
src/main/webapp resurse pentru aplicații web (fișiere JSP, fișiere text, scripturi etc.)

După cum puteți vedea, diferă semnificativ de structura fișierului WAR pe care o cunoașteți. Dar ceea ce se întâmplă de fapt la compilarea unei aplicații web este pur și simplu mutarea și concatenarea fișierelor în structura definită în specificația Java EE.

Directorul src/main/webapp definește rădăcina de context a aplicației web (atunci când este implementată pe un server, rădăcina de context este aceeași cu numele fișierului WAR) și conține deja directorul WEB-INF în ea. Adică, conținutul src/main/webapp este transferat complet în aplicația web.

Toate clasele dvs. Java sunt compilate în fișiere de clasă și, păstrând structura pachetului, sunt mutate în directorul /WEB-INF/classes/ . JAR-urile bibliotecilor incluse, care sunt definite în dependențele Maven pom.xml așa cum am definit mai sus, sunt mutate în directorul /WEB-INF/lib/ .

Resursele aplicației src/main/resources sunt mutate în calea de clasă a aplicației, în special în același director /WEB-INF/classes/ .

Pentru a fi complet clar, uitați-vă la această diagramă, care vă va ajuta să înțelegeți cum și ce se întâmplă unde se construiește un proiect:

dispozitiv de fișier de război