struktura plików wojennych

Każda aplikacja internetowa po przesłaniu na serwer WWW jest spakowana do pojedynczego pliku .war. WAR oznacza teraz zasoby aplikacji sieciowych, chociaż kiedyś było to Web ARchive. W rzeczywistości jest to archiwum ZIP zawierające spakowaną aplikację internetową.

Oto jak wygląda typowa zawartość pliku wojennego:

/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

Wewnątrz pliku wojny znajdują się statyczne zasoby internetowe , takie jak pliki .html, .css, .js i tak dalej. Mogą to być również zdjęcia, filmy i ogólnie dowolne pliki. Mogą znajdować się w katalogu głównym lub w podfolderach, nie ma to znaczenia. Tomcat po prostu je obsłuży, jeśli zostanie o to poproszony.

Załóżmy, że Twoja aplikacja internetowa jest ładowana na serwerze WWW pod nazwą apple, a gdy zostanie zażądane http://localhost/apple/images/logo.png , Tomcat zwróci plik /images/logo.png .

Osobno warto zwrócić uwagę na folder WEB-INF . Jest przeznaczony do przechowywania w nim kodu Java. Tomcat nie ujawni jego zawartości.

/WEB-INF/klasy/ katalog dla skompilowanych klas Java innych niż JAR, w tym klas serwletów i plików zasobów potrzebnych programowi ładującemu przed uruchomieniem aplikacji
/WEB-INF/lib/ miejsce do przechowywania bibliotek słoików
/WEB-INF/web.xml deskryptor wdrażania

struktura plików wojennych i projekt maven

Przejdźmy teraz do hierarchii katalogów projektu Maven. Możesz zobaczyć pełny układ katalogu w oficjalnej instrukcji. Tutaj zapoznamy się z nim w nieco skróconej wersji, z wyłączeniem zasobów testowych. Tak więc standardowa hierarchia katalogów Mavena wygląda następująco:

src/main/java kody źródłowe klas aplikacji i bibliotek zgodnie z ogólnie przyjętą hierarchią pakietów
źródło/główne/zasoby pliki zasobów aplikacji: ustawienia bazy danych, pliki lokalizacyjne itp.
src/main/webapp zasoby aplikacji webowych (pliki JSP, pliki tekstowe, skrypty itp.)

Jak widać znacznie różni się on strukturą od znanego Ci pliku WAR. Ale to, co faktycznie dzieje się podczas kompilacji aplikacji internetowej, to po prostu przenoszenie i łączenie plików w strukturę zdefiniowaną w specyfikacji Java EE.

Katalog src/main/webapp definiuje kontekstowy katalog główny aplikacji internetowej (po wdrożeniu na serwerze kontekstowy katalog główny jest taki sam jak nazwa pliku WAR) i zawiera już katalog WEB-INF. Oznacza to, że zawartość src/main/webapp jest całkowicie przenoszona do aplikacji internetowej.

Wszystkie twoje klasy Java są kompilowane do plików klas i, zachowując swoją strukturę pakietu, są przenoszone do katalogu /WEB-INF/classes/ . Pliki JAR dołączonych bibliotek, które są zdefiniowane w zależnościach Maven pom.xml, jak zdefiniowaliśmy powyżej, są przenoszone do katalogu /WEB-INF/lib/ .

Zasoby aplikacji src/main/resources są przenoszone do ścieżki klas aplikacji, konkretnie do tego samego katalogu /WEB-INF/classes/ .

Aby było to całkowicie jasne, spójrz na ten diagram, który pomoże ci zrozumieć, jak i co się dzieje podczas budowania projektu:

urządzenie plików wojennych