krig filstruktur

Hver nettapplikasjon, når den lastes opp til webserveren, er pakket inn i en enkelt .war-fil. WAR står nå for Web Application Resources, selv om det pleide å være Web ARchive. Faktisk er dette et zip-arkiv som inneholder en pakket webapplikasjon.

Slik ser det typiske innholdet i en krigsfil ut:

/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

Inne i krigsfilen er statiske nettressurser som .html, .css, .js-filer og så videre. Det kan også være bilder, videoer og generelt alle filer. De kan være i roten eller i undermapper, det spiller ingen rolle. Tomcat vil ganske enkelt servere dem hvis de blir bedt om det.

La oss si at nettapplikasjonen din er lastet inn på nettserveren under navnet apple, så når http://localhost/apple/images/logo.png blir bedt om , vil Tomcat returnere filen /images/logo.png .

Separat er det verdt å merke seg WEB-INF-mappen . Den er designet for å lagre Java-kode i den. Tomcat vil ikke gi ut innholdet.

/WEB-INF/klasser/ katalog for kompilerte ikke-JAR Java-klasser, inkludert servlet-klasser og ressursfiler som kreves av lasteren før du kjører applikasjonen
/WEB-INF/lib/ sted å lagre jar-biblioteker
/WEB-INF/web.xml distribusjonsbeskrivelse

krigsfilstruktur og maven-prosjekt

La oss nå gå videre til kataloghierarkiet til Maven-prosjektet. Du kan se hele katalogoppsettet i den offisielle håndboken. Her skal vi gjøre oss kjent med den i en noe forkortet versjon, unntatt testressurser. Så, standard Maven-kataloghierarkiet ser slik ut:

src/main/java kildekoder for applikasjonsklasser og biblioteker i samsvar med det generelt aksepterte pakkehierarkiet
src/main/resources applikasjonsressursfiler: databaseinnstillinger, lokaliseringsfiler osv.
src/main/webapp nettapplikasjonsressurser (JSP-filer, tekstfiler, skript, etc.)

Som du kan se, skiller den seg betydelig fra strukturen til WAR-filen du kjenner. Men det som faktisk skjer når du kompilerer en nettapplikasjon er ganske enkelt å flytte og sette sammen filer til strukturen som er definert i Java EE-spesifikasjonen.

src/main/webapp- katalogen definerer kontekstroten til webapplikasjonen (når den distribueres til en server, er kontekstroten den samme som navnet på WAR-filen) og inneholder allerede WEB-INF-katalogen i den. Det vil si at innholdet i src/main/webapp blir fullstendig overført til webapplikasjonen.

Alle Java-klassene dine er kompilert til klassefiler og, med pakkestrukturen, flyttes de til /WEB-INF/classes/ -katalogen . JAR-ene til de inkluderte bibliotekene, som er definert i Maven pom.xml-avhengighetene som vi definerte ovenfor, flyttes til /WEB-INF/lib/ -katalogen .

Applikasjonsressurser src/main/resources flyttes til applikasjonens klassebane, spesifikt til den samme /WEB-INF/classes/ -katalogen .

For å gjøre det helt klart, se på dette diagrammet, som vil hjelpe deg å forstå hvordan og hva som går hvor når du bygger et prosjekt:

krigsfilenhet