oorlog bestandsstructuur

Elke webtoepassing wordt, wanneer deze naar de webserver wordt geüpload, verpakt in een enkel .war-bestand. WAR staat nu voor Web Application Resources, hoewel het vroeger Web ARchive was. In feite is dit een zip-archief dat een verpakte webapplicatie bevat.

Zo ziet de typische inhoud van een war-bestand eruit:

/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 het oorlogsbestand bevinden zich statische webbronnen zoals .html-, .css-, .js-bestanden, enzovoort. Er kunnen ook foto's, video's en in het algemeen alle bestanden zijn. Ze kunnen zich in de hoofdmap of in submappen bevinden, het maakt niet uit. Tomcat zal ze gewoon opdienen als daarom wordt gevraagd.

Stel dat uw webtoepassing op de webserver is geladen onder de naam apple, en wanneer http://localhost/apple/images/logo.png wordt aangevraagd , zal Tomcat het bestand /images/logo.png retourneren .

Afzonderlijk is het vermeldenswaard de map WEB-INF . Het is ontworpen om Java-code erin op te slaan. Tomcat zal de inhoud niet vrijgeven.

/WEB-INF/klassen/ directory voor gecompileerde niet-JAR Java-klassen, inclusief servletklassen en bronbestanden die de lader nodig heeft voordat de toepassing wordt uitgevoerd
/WEB-INF/lib/ plek om jar-bibliotheken op te slaan
/WEB-INF/web.xml descriptor van de implementatie

war-bestandsstructuur en maven-project

Laten we nu verder gaan met de directoryhiërarchie van het Maven-project. U kunt de volledige cataloguslay-out bekijken in de officiële handleiding. Hier maken we er in een wat verkorte versie kennis mee, exclusief testbronnen. De standaard Maven-directoryhiërarchie ziet er dus als volgt uit:

src/main/java broncodes van toepassingsklassen en bibliotheken in overeenstemming met de algemeen aanvaarde pakkethiërarchie
src/main/bronnen toepassingsbronbestanden: database-instellingen, lokalisatiebestanden, enz.
src/main/webapp bronnen voor webtoepassingen (JSP-bestanden, tekstbestanden, scripts, enz.)

Zoals u kunt zien, verschilt het aanzienlijk van de structuur van het WAR-bestand dat u kent. Maar wat er feitelijk gebeurt bij het compileren van een webtoepassing, is simpelweg het verplaatsen en samenvoegen van bestanden in de structuur die is gedefinieerd in de Java EE-specificatie.

De map src/main/webapp definieert de contextroot van de webtoepassing (wanneer deze op een server wordt geïmplementeerd, is de contextroot hetzelfde als de naam van het WAR-bestand) en bevat al de WEB-INF-directory. Dat wil zeggen, de inhoud van src/main/webapp wordt volledig overgebracht naar de webapplicatie.

Al uw Java-klassen worden gecompileerd in klassebestanden en, met behoud van hun pakketstructuur, verplaatst naar de /WEB-INF/classes/ directory . De JAR's van de meegeleverde bibliotheken, die zijn gedefinieerd in de Maven pom.xml-afhankelijkheden zoals we hierboven hebben gedefinieerd, worden verplaatst naar de /WEB-INF/lib/ directory .

Applicatieresources src/main/resources worden verplaatst naar het klassenpad van de applicatie, met name naar dezelfde /WEB-INF/classes/ directory .

Om het helemaal duidelijk te maken, bekijk dit diagram, dat u zal helpen begrijpen hoe en wat waar moet komen bij het bouwen van een project:

oorlogsbestandsapparaat