krigsfilstruktur
Hver webapplikation, når den uploades til webserveren, er pakket ind i en enkelt .war-fil. WAR står nu for Web Application Resources, selvom det plejede at være Web ARchive. Faktisk er dette et zip-arkiv, der indeholder en pakket webapplikation.
Sådan ser det typiske indhold af en krigsfil ud:
/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
Inde i krigsfilen er statiske webressourcer såsom .html, .css, .js-filer og så videre. Der kan også være billeder, videoer og generelt alle filer. De kan være i roden eller i undermapper, det er lige meget. Tomcat vil simpelthen servere dem, hvis de bliver bedt om.
Lad os sige, at din webapplikation er indlæst på webserveren under navnet apple, så når http://localhost/apple/images/logo.png anmodes om , returnerer Tomcat filen /images/logo.png .
Separat er det værd at bemærke WEB-INF-mappen . Det er designet til at gemme Java-kode i det. Tomcat vil ikke udlevere indholdet.
/WEB-INF/klasser/ | mappe til kompilerede ikke-JAR Java-klasser, inklusive servlet-klasser og ressourcefiler, der er nødvendige af indlæseren, før applikationen køres |
/WEB-INF/lib/ | sted at opbevare krukkebiblioteker |
/WEB-INF/web.xml | implementeringsbeskrivelse |
krigsfilstruktur og maven-projekt
Lad os nu gå videre til mappehierarkiet i Maven-projektet. Du kan se hele kataloglayoutet i den officielle manual. Her vil vi stifte bekendtskab med det i en noget forkortet version, eksklusive testressourcer. Så standard Maven-kataloghierarkiet ser sådan ud:
src/main/java | kildekoder for applikationsklasser og biblioteker i overensstemmelse med det generelt accepterede pakkehierarki |
src/main/ressourcer | applikationsressourcefiler: databaseindstillinger, lokaliseringsfiler osv. |
src/main/webapp | webapplikationsressourcer (JSP-filer, tekstfiler, scripts osv.) |
Som du kan se, adskiller den sig væsentligt fra strukturen af WAR-filen, som du kender. Men det, der rent faktisk sker, når man kompilerer en webapplikation, er simpelthen at flytte og sammenkæde filer til den struktur, der er defineret i Java EE-specifikationen.
Mappen src/main/webapp definerer kontekstroden af webapplikationen (når den er installeret på en server, er kontekstroden den samme som navnet på WAR-filen) og indeholder allerede WEB-INF-mappen i den. Det vil sige, at indholdet af src/main/webapp overføres fuldstændigt til webapplikationen.
Alle dine Java-klasser kompileres til klassefiler og flyttes til mappen /WEB-INF/classes/ , ved at bevare deres pakkestruktur . JAR'erne for de inkluderede biblioteker, som er defineret i Maven pom.xml-afhængighederne, som vi definerede ovenfor, flyttes til mappen /WEB-INF/lib/ .
Applikationsressourcer src/main/resources flyttes til applikationens klassesti, specifikt til den samme /WEB-INF/classes/ -mappe .
For at gøre det helt klart, se på dette diagram, som vil hjælpe dig med at forstå, hvordan og hvad der går hvor, når du bygger et projekt:

GO TO FULL VERSION