Typowa aplikacja WWW składa się z wielu różnego rodzaju komponentów: plików konfiguracyjnych, plików zasobów statycznych (np. HTML, JPG, CSS), plików JSP, katalogów i oczywiście plików zawierających skompilowane klasy, w tym servlety.
Poszczególne komponenty aplikacji WWW muszą być umieszczone w odpowiedniej strukturze katalogowej. Strukturę tą pokazano na poniższej ilustracji:
Struktura aplikacji WWW
Element oznaczony jako {katalog główny} to katalog grupujący wszystkie elementy naszej aplikacji. Jego nazwa może być dowolna, jednak domyślnie nazwa ta często używana jest przez serwer aplikacji do określenia adresu URL pod jakim aplikacja ta jest serwowana. W takim wypadku adresem URL naszej aplikacji będzie:
http://{adres serwera}/{katalog główny}
Jeśli np. katalog główny naszej aplikacji nazwiemy myApp i aplikację zainstalujemy na serwerze aplikacji dostępnym pod adresem http://naukajavy.pl:8080, to aplikacja będzie dostępna pod adresem http://naukajavy.pl:8080/myApp.
Bardzo ważnym katalogiem obecnym w każdej aplikacji jest katalog o nazwie WEB-INF, który – choć nazwa wydaje się dziwna – musi nazywać się dokładnie tak i musi być umieszczony bezpośrednio w katalogu głównym.
Katalog WEB-INF ma tę własność, że wszystkie umieszczone w nim pliki i katalogi są chronione przed bezpośrednim dostępem, tzn. nie jest możliwe pobranie żadnego z umieszczonych w nim plików przy pomocy żądania HTTP. Dla odmiany, wszystkie pliki umieszczone poza tym katalogiem serwer aplikacji zwróci w odpowiedzi na żądanie typu GET, jeśli do adresu URL aplikacji dodamy poprawną ścieżkę dostępu do tego pliku (względem katalogu głównego aplikacji). Np. jeśli w katalogu głównym utworzymy katalog o nazwie html i w nim plik o nazwie strona.html, to będziemy mogli pobrać ten plik (i wyświetlić w przeglądarce) wysyłając żądanie na adres {adres aplikacji}/html/strona.html, przy czym {adres aplikacji} to np. http://naukajavy.pl:8080/myApp.
W katalogu WEB-INF umieszczamy główny plik konfiguracyjny aplikacji WWW, tzw. deskryptor wdrożenia. Jest to pokazany na powyższej ilustracji plik web.xml. O tym jakie jest znaczenie tego pliku oraz co i w jaki sposób w nim konfigurujemy dowiemy się z lektury kolejnych części kursu.
W katalogu WEB-INF, w podkatalogu o nazwie classes umieszczamy w odpowiedniej – odpowiadającej pakietom – strukturze katalogowej skompilowane klasy, w tym servlety. Jeśli do implementacji aplikacji używamy bibliotek spakowanych w archiwa JAR to biblioteki te umieszczamy w podkatalogu lib.