WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 1 TESTOWANIE SERWERA TOMCAT FUNDACJI APACHE Testowanie podstawowej konfiguracji serwera w środowisku NetBeans 1. Uruchom środowisko NetBeans 7.3.1. 2. W lewym górnym oknie, które wyświetla zawartość Projects (Projekty), przełącz się do okna Services (Usługi). 3. Rozwiń węzeł Servers. 4. Kliknij prawym przyciskiem myszy nazwę Apache Tomcat 7.0.34.0 a następnie wybierz opcję Start Po chwili nastąpi uruchomienie serwera Tomcat. 5. Kliknij ponownie prawym przyciskiem myszy nazwę Apache Tomcat 7.0.34.0 a następnie wybierz opcję Properties, zostanie wyświetlone poniższe okno z istotnymi ustawieniami konfiguracyjnymi serwera.
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 2 Zwróć uwagę na numer portu oraz warność zmiennej środowiskowej Catalina Home. 6. Otwórz przeglądarkę i wpisz w niej adres: http://localhost:8084/ W przeglądarce powinna pojawić się strona pokazana na rysunku poniżej. Jeśli strona nie została wyświetlona, trzeba ponownie przejrzeć informacje zamieszczone na temat instalacji serwera. 7. W oknie Output NetBeans a znajdziemy między innymi informacje o zmiennych środowiskowych, których używać będzie środowisko NetBeans.
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 3 8. Dysk i folder w którym został zainstalowany serwer Tomcat nazywać będziemy $CATALINA_HOME. Domyślnie instalator proponuje folder D:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.34 Test 1. TESTY 1. Jeśli serwer działa poprawnie, należy sprawdzić, czy można na nim zainstalować i wyświetlić w przeglądarce dokumenty HTML i strony JSP. W naszym przypadku serwer jest uruchamiany na lokalnym komputerze i dostęp do serwera jest zdefiniowany na porcie 8084, zatem w trakcie określenia adresu URL będziemy używać nazwy komputera localhost:8084. Katalogi służące do przechowywania stron HTML i JSP dla serwera Tomcat są określone następująco: lub $CATALINA_HOME \webapps\root $CATALINA_HOME \webapps\root\jakiś własny dowolny katalog Utwórz na dysku Z:\ w Netbeans nowy projekt typu Java Class Library z kategorii Java o nazwie Test1HTML Dodaj do projektu plik typu HTML o nazwie Hello (menu File New File Categories: Other HTML File) Dokonaj edycji programu zgodnie z listingiem przedstawionym poniżej (instrukcje wymagające edycji wyróżniono żółtym tłem): <!DOCTYPE html> <html> <head> <title>test HTML</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body BGCOLOR="#FDF5E6"> <H1>Test 1 - HTML</H1> Wydział Transportu Politechniki Warszawskiej WITA </body> </html> Zapisz zmiany w pliku Hello.html. Umieść w katalogu $CATALINA_HOME \webapps\root poniższy plik Hello.html (powinien być na dysku Z:\Test1HTML) Otworzyć przeglądarkę i wpisać w niej adres: http://localhost:8084/hello.html Jeśli niepoprawnie wyświetlają się polskie znaki w przeglądarce internetowej zmień ustawienia następująco: FireFox: Menu Widok -> Zestaw znaków -> Środkowoeuropejski (ISO-8859-2) Internet Explorer: Menu Widok -> Kodowanie -> Europa Środkowa (ISO) lub Europa Środkowa (Windows) Utwórz w NetBeans na dysku Z:\ nowy projekt Web Application o nazwie Test1JSP wybierając kategorię projektu Java Web. W następnym oknie dialogowym Server and Settings wybierz z listy serwer Apache Tomcat 7.0.14.0 pozostałe ustawienia pozostaw bez zmian. Naciśnij przycisk Finish. W oknie Projects rozwiń gałąź Web Pages i zmień nazwę pliku index.jsp na Hello.jsp Dokonaj edycji programu zgodnie z listingiem przedstawionym poniżej (instrukcje wymagające edycji wyróżniono żółtym tłem):
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 4 <%-- Document : Hello Created on : Sep 29, 2013, 12:25:04 PM Author : student --%> <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE html> <html> <head> <title>test 1 - JSP</title> <meta http-equiv="content-type" content="text/html; charset= UTF-8"> </head> <body BGCOLOR="#FDF5E6"> <H1>Test JSP</H1> Wydział Transportu Politechniki Warszawskiej WITA </body> </html> Skompiluj plik Hello.jsp i sprawdź, czy kompilacja zakończyła się sukcesem. Umieść w katalogu $CATALINA_HOME \webapps\root poniższy plik Hello.jsp (powinien być na dysku Z:\Test1JSP\web) Otworzyć przeglądarkę i wpisać w niej adres: http://localhost:8084/hello.jsp Jeżeli okaże się, że nie można wyświetlić ani dokumentu HTML, ani strony JSP, na przykład, gdy będą pojawiać się błędy nr 404 dokument nie znaleziony, oznacza to że umieszczono dokumenty w niewłaściwym katalogu, bądź też użyto niewłaściwego adresu URL (istotne są małe i duże litery). Testowanie poprawności konfiguracji środowiska pracy - serwlety Wydawać się może, że środowisko jest skonfigurowane poprawnie, ale należy to jeszcze potwierdzić w praktyce uruchamiając 3 kolejne testowe serwlety. Test 2. Serwlet, który nie należy do żadnego pakietu, nie korzysta z jakichkolwiek klas pomocniczych, jedynie co robi to generuje zwyczajny kod HTML. 1. Utwórz w NetBeans nowy projekt typu Java Class Library z kategorii Java o nazwie Test2 w folderze Z:\ Dodaj do projektu klasę typu Servlet o nazwie Test2Servlet (kliknij prawym przyciskiem nazwę projektu Test2 wybierz: New Other, następnie wybierz w panelu Categories: Web a panelu Type Files: Servlet). Wypełnij okno dialogowe New Servlet, tak jak to pokazano poniżej i zatwierdź zmiany przyciskiem Finish.
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 5 2. Pojawią się błędy w kodzie źródłowym programu, między innymi w wierszach od 8 do 11 programu (instrukcje są poprawnie napisane). Chwilowo zignoruj je, ponieważ oznacza to tylko brak dostępu środowiska NetBeans do klasy javax która nie jest standardowym pakietem Java SE. 3. Przełącz się w NetBeans do okna Projects i kliknij prawym przyciskiem myszy wewnątrz projektu Test2 nazwę Libraries a następnie z menu podręcznego wybierz opcję Add JAR/Folder. Dodaj do okna plik: servlet-api.jar który znajdziesz w folderze: $CATALINA_HOME\lib\servlet-api.jar Błędy w kodzie programu powinny zniknąć. 4. Zamień poniższą instrukcję (prawdopodobnie wiersz 41) w pliku Test2Servlet.java na dwie nowe out.println("<h1>servlet Test2Servlet at " + request.getcontextpath() + "</h1>"); out.println("<h1>*** Wydział Transportu ***</h1>"); out.println("<h1>test 2 - Servlet, który nie należy do żadnego pakietu</h1>"); 5. Po udanej kompilacji pliku Test2Servlet.java wygenerowany plik klasy Test2Servlet.class należy skopiować do odpowiedniego katalogu, w naszym przypadku $CATALINA_HOME\webapps\ROOT\WEB- INF\classes. Do kopiowania wykorzystaj koniecznie Eksploratora Windows. 6. Teraz należy skonfigurować plik web.xml Definiowanie podstawowej struktury i zawartości pliku web.xml (deskryptora rozmieszczenia) Wybierając z menu File opcję OpenFile otwórz w NetBeans plik web.xml z katalogu $CATALINA_HOME\webapps\ROOT\WEB-INF Aby wyświetlić zawartość pliku w kodzie źródłowym xml kliknij zakładkę XML. Plik web.xml zawsze jest umieszczany w katalogu WEB-INF aplikacji WWW. Plik web.xml zgodny ze specyfikacjami Java Servlet 2.3 (JSP 1.2) oraz Java Servlet 2.4 (JSP 3.0) ma w wersji Apache Tomcat 7.0.34 następującą zawartość: W tym miejscu umieszczamy instrukcje zawierające elementy servlet oraz servlet-mapping
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 6 Niestandardowe adresy URL serwletów określa się przy użyciu elementów servlet oraz servlet-mapping, zapisywanych w pliku web.xml nazywanym deskryptorem rozmieszczenia. Do zarejestrowania adresu URL serwletu wystarczy znajomość pięciu poniższych informacji: Położenia pliku. Zawsze jest on przechowywany w katalogu WEB-INF. Jego podstawowej struktury. Plik zaczyna się od nagłówka XML i zawiera element web-app. Sposobu określania nazwy serwletów. Do tego celu należy użyć elementu servlet zawierającego dwa elementy podrzędne: servlet-name oraz servlet-class. Sposobu określania adresu URL dla serwletu o podanej nazwie. Do tego celu służy element servletmapping zawierający dwa elementy podrzędne: servlet-name oraz url-pattern. Czasu odczytywania zawartości pliku web.xml. Jest on odczytywany wyłącznie podczas uruchamiania serwera. W celu określenia nazwy serwletu, wewnątrz elementu web-app należy umieścić element servlet zawierający dwa elementy podrzędne: servlet-name (określający nazwę nadawaną serwletowi) oraz servlet-class (zawierający pełną nazwę klasy serwletu). W naszym przypadku będzie to: <servlet> <servlet-name>test2servlet</servlet-name> <servlet-class>test2servlet</servlet-class> </servlet> Aby przypisać niestandardowy adres URL serwletowi o określonej nazwie, w pliku web.xml należy umieścić element servlet-mapping zawierający dwa elementy podrzędne: servlet-name (określający zdefiniowaną wcześniej nazwę serwletu) oraz url-pattern (końcówkę adresu URL rozpoczynającą się od znaku ukośnika). <servlet-mapping> <servlet-name>test2servlet</servlet-name> <url-pattern>/test2servlet</url-pattern> </servlet-mapping> 7. W pliku web.xml i dopisz w odpowiednim miejscu elementy servlet oraz servlet-mapping w postaci pokazanej wyżej. 8. Zapisz zmiany w pliku web.xml. 9. Po zapisaniu zmian w pliku, należy serwer Tomcat zrestartować, aby zmiany były uaktywnione. 10. Otworzyć przeglądarkę i wpisać w niej adres: http://localhost:8084/test2servlet W ten sposób powinien zostać wyświetlony serwlet Test2Servlet.class, który nie należy do żadnego pakietu i jest wyświetlony przy użyciu niestandardowego adresu URL. Jeśli serwlet udało się skompilować, lecz przeglądarka nie znalazła zasobu o podanym adresie URL, to zapewnie plik klasy serwletu został umieszczony w niewłaściwym miejscu lub wystąpiły błędy w konfiguracji pliku web.xml Pamiętaj: Jeśli wystąpiły błędy w pliku web.xml lub plik *.class został umieszczony w niewłaściwym miejscu lub jego nazwa była niezgodna z plikiem deskryptora, po wszelkich poprawkach zawsze należy zrestartować serwer Tomcat. Test 3. Serwlet, który należy do pakietu (WT), ale nie korzysta z jakichkolwiek klas pomocniczych, jedynie co robi to generuje zwyczajny kod HTML. 1. Utwórz w NetBeans nowy projekt typu Java Class Library z kategorii Java o nazwie Test3 w folderze Z:\ Dodaj do projektu klasę typu Servlet o nazwie Test3Servlet (kliknij prawym przyciskiem nazwę projektu Test3 wybierz: New Other, następnie wybierz w panelu Categories: Web a panelu Type Files: Servlet). Wypełnij okno dialogowe New
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 7 Servlet, tak jak to pokazano poniżej. Nie zapomnij wypełnić pola dialogowego Package: wpisując w nim tekst WT. Zatwierdź zmiany przyciskiem Finish. 2. Pojawią się błędy w kodzie źródłowym programu, między innymi w wierszach od 8 do 11 programu (a są one poprawnie napisane). Chwilowo zignoruj je, ponieważ oznacza to tylko brak dostępu środowiska NetBeans do klasy javax która nie jest standardowym pakietem Java SE. 3. Przełącz się w NetBeans do okna Projects i kliknij prawym przyciskiem myszy wewnątrz projektu Test3 nazwę Libraries a następnie z menu podręcznego wybierz opcję Add JAR/Folder. Dodaj do okna plik: servlet-api.jar który znajdziesz w folderze: $CATALINA_HOME\lib\servlet-api.jar Błędy w kodzie programu powinny zniknąć. 4. Zamień poniższą instrukcję (wiersz 41) na nową out.println("<h1>servlet Test3Servlet at " + request.getcontextpath() + "</h1>"); out.println("<h1>test 3 - Servlet, należący do pakietu WT</h1>"); 5. Po udanej kompilacji pliku Test3Servlet.java wygenerowany plik klasy Test3Servlet.class, który powinien zostać utworzony się folderze WT a w nim plik Test3Servlet.class. 6. Po udanej kompilacji przekopiować folder WT razem z wygenerowanym plikiem klasy Test3Servlet.class do odpowiedniego katalogu, w naszym przypadku $CATALINA_HOME\webapps\ROOT\WEB-INF\classes. Użyj do przekopiowania foldera WT - Eksploratora Windows. 7. Teraz należy skonfigurować plik web.xml, dopisując do jego poprzedniej wersji następujące instrukcje. <servlet> <servlet-name>test3servlet</servlet-name> <servlet-class>wt.test3servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test3servlet</servlet-name> <url-pattern>/test3</url-pattern> </servlet-mapping> 8. Po zapisaniu zmian w pliku web.xml, należy serwer Tomcat zatrzymać i ponownie uruchomić, aby zmiany były uaktywnione. 9. Otworzyć przeglądarkę i wpisać w niej adres: http://localhost:8084/test3 10. Jeśli test się nie powiedzie, to przyczyną może być błędnie podany adres URL bądź też umieszczenie pliku Test3Servlet.class w niewłaściwym katalogu lub błąd w konfiguracji web.xml a być może nie został zrestartowany serwer Tomcat.
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 8 Test 4. Serwlet, który należy do pakietu i używa klas pomocniczych. 1. Pobierz ze strony delta.wt.pw.edu.pl/~zbig/wdis/ plik źródłowy do zajęć 1 z drugiej kolumny tabelki dostępny pod linkiem: ServletUtilities i zapisz go na dysku Z:\ 2. Utwórz kopię projektu Test3 na dysku Z:\ i zapisz go pod nazwą Test4. Czynność wykonaj w NetBeans w oknie Projects, klikając prawym przyciskiem nazwę projektu Test3. 3. Zmień nazwę klasy głównej z Test3Servlet na Test4Servlet, klikając prawym przyciskiem nazwę klasy głównej i wybierając opcję Refactor Rename 4. Zmień w wierszu 38 fragment tekstu Test3Servlet na Test4Servlet. 5. Dodaj do projektu w oddzielnym pliku, ale w pakiecie WT klasę ServletUtilities, klikając prawym przyciskiem nazwę projektu Test4Servlet i wybierając opcję New Java Class 6. Uzupełnij jej treść o brakujące instrukcje następująco (pominięto komentarze). package WT; public class ServletUtilities { public static final String DOCTYPE = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">"; public static String headwithtitle(string title) { return(doctype + "\n" + "<HTML>\n" + "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n"); } } 7. Zamień poniższą instrukcję (prawdopodobnie wiersz 41) w pliku Test4Servlet.java out.println("<h1>test 3 - Servlet, należący do pakietu WT</h1>"); na następujące: String title = "TEST 4 Serwlet należący do pakietu WT, który używa klas pomocniczych"; out.println(servletutilities.headwithtitle(title)+ "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1>" + title + "</H1>\n" + "</BODY></HTML>"); 8. Uruchom kompilację Test4Servlet.java, jego kompilacja spowoduje skompilowanie także pliku ServletUtilities.java. Zostaną wygenerowane pliki Test4Servlet.class oraz ServletUtilites.class. 9. Skopiuj na serwer Tomcat do katalogu WT pliki: Test4Servlet.class oraz ServletUtilities.class 10. Teraz należy skonfigurować plik web.xml <servlet> <servlet-name>test4servlet</servlet-name> <servlet-class>wt.test4servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>test4servlet</servlet-name> <url-pattern>/wt.test4</url-pattern> </servlet-mapping> 11. Po zapisaniu zmian w pliku web.xml, należy serwer Tomcat zatrzymać i ponownie uruchomić, aby zmiany były uaktywnione. 12. Otworzyć przeglądarkę i wpisać w niej adres: http://localhost:8084/wt.test4
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 9 13. Jeśli test się nie powiedzie, to przyczyną może być błędnie podany adres URL bądź też umieszczenie pliku Test4Servlet.class lub ServletUtilities.class w niewłaściwym katalogu, lub też błąd w konfiguracji pliku deskryptora rozmieszczenia web.xml, a może nie został zrestartowany serwer Tomcat. Testowanie podstawowej konfiguracji serwera Tomcat uruchomionego poza środowiskiem NetBeans (Tomcat uruchomiony w trybie poleceń) 1. Zatrzymaj działanie serwera Tomcat w NetBeans. 2. Zamknij środowisko NetBeans 3. Uruchom klikając na pulpicie ikonę serwera Tomcat o nazwie Tomcat7. Powinno pojawić się okno serwera Tomcat wyświetlane w oknie poleceń. Uwaga: zamknięcie okna Tomcat zatrzymuje serwer. Zauważ, że z serwerem w tym przypadku możemy połączyć się po porcie 8080. 4. Otwórz przeglądarkę i wpisz w niej adres: http://localhost:8080/ Powinna pojawić się strona tytułowa serwera Tomcat. (patrz pkt.6 na str. 2) 5. Sprawdź kolejno, czy możemy uruchomić wszystkie wcześniej przesłane na serwer programy (testy od 1 do 4) odwołując się do portu 8080.
WDIS: Apache Tomcat 7.0.34 NetBeans 7.3.1. Zajęcia 1 strona - 10 6. Zgłoś prowadzącemu wykonanie wszystkich zadań. 7. Zamknij okno Tomcat, 8. Zamknij pracę sytemu Windows, (wyłącz komputer).