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:
GO TO FULL VERSION