Core Java Servlets i JavaServer Pages Tom II Wydanie II


Core Java Servlets
i JavaServer Pages.
Tom II. Wydanie II
Autor: Marty Hall,
Larry Brown, Yaakov Chaikin
Tłumaczenie: Daniel Kaczmarek
ISBN: 978-83-246-1726-5
Tytuł oryginału: Core Servlets
and Javaserver Pages: Advanced
Technologies, Vol. 2 (2nd Edition)
Format: 172x245, stron: 632
" Jak wykorzystać strumienie?
" Jak stworzyć efektowny interfejs użytkownika?
" Jak zapewnić bezpieczeństwo w tworzonych aplikacjach?
Co spowodowało, że język programowania Java zyskał tak wielką popularnoSć?
Przyczyn jest kilka: możliwoSć przenoszenia kodu między programami, wydajnoSć i to,
co programiSci lubią najbardziej  mechanizm automatycznego oczyszczania pamięci.
Nie bez znaczenia jest również to, że Java jest językiem zorientowanym obiektowo,
udostępnia obsługę programowania rozproszonego oraz Swietną dokumentację.
Ponadto liczne publikacje oraz pomocna społecznoSć sprawiają, że Java zajmuje
poczesne miejsce wSród innych języków programowania.
Kolejne wydanie książki zostało zaktualizowane o wszystkie te elementy, które pojawiły
się w wersji szóstej platformy Java Standard Edition. Dzięki tej książce dowiesz się,
w jaki sposób wykorzystać strumienie, jak parsować dokumenty XML czy też w jaki
sposób tworzyć aplikacje sieciowe. Poznasz interfejs JDBC, sposób wykorzystania
transakcji oraz wykonywania zapytań SQL. Autorzy w szczegółowy sposób pokażą Ci,
jak tworzyć aplikacje z wykorzystaniem biblioteki Swing. Dodatkowo przedstawią,
w jaki sposób zapewnić bezpieczeństwo w tworzonych przez Ciebie aplikacjach.
Wszystkie te - oraz wiele innych  zagadnienia zostaną przedstawione w przystępny
i sprawdzony sposób!
" Wykorzystanie strumieni
" Dokumenty XML i ich wykorzystanie w języku Java
" Programowanie aplikacji sieciowych
" Wykorzystanie interfejsu JDBC
" Tworzenie aplikacji wielojęzycznych
" MożliwoSci pakietu Swing
" Wykorzystanie biblioteki AWT
" Bezpieczeństwo w aplikacjach
" Zastosowanie podpisu cyfrowego
" Sposoby wykorzystania obiektów rozproszonych (RMI)
Wykorzystaj zaawansowane możliwoSci języka Java w swoich projektach!
Spis tre ci
Wprowadzenie ................................................................................................................................................ 11
Podzi kowania ............................................................................................................................................... 15
O autorach ...................................................................................................................................................... 16
Rozdzia 1. U ywanie i wdra anie aplikacji internetowych ......................................................................... 17
1.1. Cele aplikacji internetowych .................................................................................... 18
Organizacja ....................................................................................................... 18
Przeno no ..................................................................................................... 18
Separacja ......................................................................................................... 18
1.2. Struktura aplikacji internetowych ............................................................................... 19
Lokalizacje poszczególnych rodzajów plików ......................................................... 19
1.3. Rejestrowanie aplikacji internetowych na serwerze ..................................................... 23
Rejestrowanie aplikacji internetowych na serwerze Tomcat ................................... 24
Rejestrowanie aplikacji internetowych na innych serwerach ................................... 26
1.4. Strategie rozwoju i wdra ania aplikacji internetowych .................................................. 28
Kopiowanie struktury do skrótu lub dowi zania symbolicznego .............................. 29
Wykorzystanie funkcji wdra ania udost pnianych przez IDE ................................... 30
U ywanie narz dzi ant, maven i im podobnych ..................................................... 30
U ywanie IDE wraz z narz dziem Ant ................................................................... 31
1.5. Umieszczanie aplikacji internetowych w plikach WAR .................................................. 31
1.6. Tworzenie prostej aplikacji internetowej ..................................................................... 32
Pobranie aplikacji app-blank i zmiana jej nazwy na testApp ................................... 33
Pobranie plików test.html, test.jsp oraz TestServlet.java ....................................... 33
Dodanie plików test.html i test.jsp do aplikacji internetowej testApp ..................... 33
Umieszczenie pliku TestServlet.java w katalogu
testApp/WEB-INF/classes/coreservlets .......................................................... 34
Kompilacja pliku TestServlet.java ........................................................................ 34
Zadeklarowanie w pliku web.xml klasy TestServlet.class oraz adresu URL,
który j wywo uje ........................................................................................... 35
Skopiowanie aplikacji testApp do katalogu katalog_tomcat/webapps .................... 36
4 Core Java Servlets i JavaServer Pages
Uruchomienie serwera Tomcat ............................................................................ 36
Wywo anie aplikacji testApp przy u yciu adresu URL
w postaci http://localhost/testApp/zasób ...................................................... 37
1.7. Wspó u ytkowanie danych przez aplikacje internetowe ................................................ 39
Rozdzia 2. Kontrolowanie dzia ania aplikacji przy u yciu deskryptora web.xml ....................................47
2.1. Przeznaczenie deskryptora wdro enia ........................................................................ 48
2.2. Definiowanie elementu g ównego i elementu nag ówka ............................................... 48
2.3. Elementy deskryptora web.xml .................................................................................. 50
Wersja 2.4 specyfikacji serwletów ....................................................................... 50
Wersja 2.3 specyfikacji serwletów ....................................................................... 53
2.4. Przypisywanie nazw i w asnych adresów URL .............................................................. 55
Przypisywanie nazw ............................................................................................ 56
Definiowanie w asnych adresów URL ................................................................... 57
Nazewnictwo stron JSP ...................................................................................... 62
2.5. Wy czanie serwletu wywo uj cego ............................................................................ 64
Zmiana odwzorowania wzorca adresu URL /servlet/ ............................................. 65
Globalne wy czanie serwletu wywo uj cego na serwerze Tomcat .......................... 66
2.6. Inicjalizowanie i wst pne adowanie serwletów i stron JSP .......................................... 68
Przypisywanie serwletom parametrów inicjalizacyjnych .......................................... 68
Przypisywanie parametrów inicjalizacyjnych JSP .................................................... 71
Parametry inicjalizacyjne na poziomie ca ej aplikacji ............................................. 74
adowanie serwletów w momencie uruchamiania serwera .................................... 74
2.7. Deklarowanie filtrów ................................................................................................ 78
2.8. Definiowanie stron powitalnych ................................................................................. 81
2.9. Wyznaczanie stron obs uguj cych b dy ..................................................................... 81
Element error-code ............................................................................................ 82
Element exception-type ...................................................................................... 84
2.10. Definiowanie zabezpiecze ...................................................................................... 86
Definiowanie metody uwierzytelniania ................................................................. 86
Ograniczanie dost pu do zasobów sieciowych ...................................................... 88
Przypisywanie ról ............................................................................................... 91
2.11. Kontrolowanie czasu wygasania sesji ....................................................................... 92
2.12. Dokumentowanie aplikacji internetowych .................................................................. 92
2.13. Przypisywanie plikom typów MIME ............................................................................ 93
2.14. Konfigurowanie stron JSP ........................................................................................ 94
Lokalizacja deskryptorów bibliotek znaczników ..................................................... 94
Konfigurowanie w a ciwo ci stron JSP ................................................................. 95
2.15. Kodowanie znaków ............................................................................................... 100
2.16. Tworzenie procesów nas uchuj cych zdarze aplikacji .............................................. 100
2.17. Tworzenie rozwi za przeznaczonych dla rodowisk klastrowych ............................... 101
2.18. Elementy J2EE ..................................................................................................... 104
Rozdzia 3. Zabezpieczenia deklaratywne ................................................................................................. 109
3.1. Uwierzytelnianie przy u yciu formularza .................................................................... 111
Definiowanie nazw u ytkowników, hase i ról ...................................................... 113
W czanie na serwerze uwierzytelniania przy u yciu formularzy
i wskazywanie lokalizacji strony logowania oraz strony obs ugi b du logowania ....114
Tworzenie strony logowania .............................................................................. 115
Tworzenie strony z informacj o b dzie logowania ............................................. 118
Wskazywanie adresów URL, które maj by zabezpieczone has em ..................... 118
Zdefiniowanie listy wszystkich abstrakcyjnych ról ............................................... 122
Spis tre ci 5
Wskazywanie adresów URL dost pnych wy cznie
za po rednictwem protoko u SSL .................................................................. 122
Wy czanie serwletu wywo uj cego .................................................................... 124
3.2. Przyk ad. Uwierzytelnianie przy u yciu formularzy ..................................................... 125
Strona g ówna ................................................................................................. 125
Deskryptor wdro enia ....................................................................................... 126
Plik z has ami .................................................................................................. 129
Strony logowania i obs ugi b du logowania ....................................................... 130
Katalog investing ............................................................................................. 131
Katalog ssl ..................................................................................................... 134
Katalog admin ................................................................................................. 137
Serwlet NoInvokerServlet ................................................................................. 140
Strony niezabezpieczone .................................................................................. 141
3.3. Uwierzytelnianie metod BASIC ............................................................................... 144
Definiowanie nazw u ytkowników, hase i ról ...................................................... 146
W czanie na serwerze uwierzytelniania metod BASIC
i definiowanie nazwy obszaru ....................................................................... 146
Wskazywanie adresów URL, które maj by zabezpieczone has em ..................... 146
Zdefiniowanie listy wszystkich abstrakcyjnych ról ............................................... 147
Wskazywanie adresów URL dost pnych wy cznie
za po rednictwem protoko u SSL .................................................................. 147
3.4. Przyk ad. Uwierzytelnianie metod BASIC ................................................................. 147
Strona g ówna ................................................................................................. 148
Deskryptor wdro enia ....................................................................................... 149
Plik hase ........................................................................................................ 151
Plan finansowy ................................................................................................ 151
Biznesplan ...................................................................................................... 152
Serwlet NoInvokerServlet ................................................................................. 154
3.5. Konfigurowanie obs ugi protoko u SSL na serwerze Tomcat ....................................... 155
3.6. WebClient. Interaktywna komunikacja z serwerami WWW .......................................... 161
3.7. Podpisywanie certyfikatu serwera ............................................................................ 164
Eksport certyfikatu CA ...................................................................................... 166
Komunikacja klienta WebClient z serwerem Tomcat przy u yciu protoko u SSL ..... 170
Rozdzia 4. Zabezpieczenia programistyczne ........................................................................................... 173
4.1. czenie zabezpiecze programistycznych i zabezpiecze
zarz dzanych przez kontener ..................................................................... 175
Odwo ania do ról ............................................................................................. 176
4.2. Przyk ad. czenie zabezpiecze programistycznych i zabezpiecze
zarz dzanych przez kontener ..................................................................... 177
4.3. Zastosowanie wy cznie zabezpiecze programistycznych ......................................... 180
4.4. Przyk ad. Zastosowanie wy cznie zabezpiecze programistycznych ........................... 184
4.5. Zabezpieczenia programistyczne i protokó SSL ......................................................... 187
Ustalenie, czy u ywany jest protokó SSL ........................................................... 188
Przekierowywanie wywo a , które nie dotycz protoko u SSL ............................... 188
Odczytanie liczby bitów w kluczu ....................................................................... 189
Sprawdzenie algorytmu szyfrowania .................................................................. 189
Dost p do certyfikatu X.509 klienta .................................................................. 189
4.6. Przyk ad. Zabezpieczenia programistyczne i protokó SSL .......................................... 190
6 Core Java Servlets i JavaServer Pages
Rozdzia 5. Filtry serwletów i stron JSP ................................................................................................... 195
5.1. Tworzenie prostych filtrów ...................................................................................... 196
Tworzenie klasy implementuj cej interfejs Filter ................................................. 197
Implementacja filtra w metodzie doFilter ............................................................ 198
Wywo anie metody doFilter obiektu FilterChain ................................................... 198
Rejestrowanie filtra dla serwletów lub stron JSP ................................................. 198
Wy czenie serwletu wywo uj cego .................................................................... 200
5.2. Przyk ad. Filtr raportuj cy ........................................................................................ 201
5.3. Dost p do kontekstu serwletu z poziomu filtra ......................................................... 207
5.4. Przyk ad. Filtr zapisuj cy do dziennika ..................................................................... 208
5.5. U ywanie parametrów inicjalizuj cych dla filtrów ...................................................... 210
5.6. Przyk ad. Filtr czasu udost pnienia .......................................................................... 212
5.7. Blokowanie odpowiedzi .......................................................................................... 215
5.8. Przyk ad. Filtr blokuj cy stron ................................................................................ 215
5.9. Modyfikowanie odpowiedzi ..................................................................................... 221
Obiekt przechowuj cy odpowied , gotowy do wielokrotnego wykorzystania ............ 222
5.10. Przyk ad. Filtr zast puj cy ..................................................................................... 224
Ogólny filtr modyfikuj cy ................................................................................... 224
Konkretny filtr modyfikuj cy .............................................................................. 225
5.11. Przyk ad. Filtr kompresuj cy .................................................................................. 230
5.12. Konfigurowanie wspó pracy filtra z obiektem RequestDispatcher ............................. 235
5.13. Przyk ad. atanie potencjalnej dziury w zabezpieczeniach ........................................ 237
5.14. Pe na definicja deskryptora wdro enia ................................................................... 243
Rozdzia 6. Model zdarze aplikacji ........................................................................................................... 249
6.1. Monitorowanie zdarze polegaj cych na utworzeniu i zniszczeniu kontekstu serwletu ..... 252
6.2. Przyk ad. Inicjalizowanie wspó u ytkowanych danych ................................................. 253
6.3. Wykrywanie zmian warto ci atrybutów kontekstu serwletu ......................................... 258
6.4. Monitorowanie zmian we wspó u ytkowanych danych ................................................ 259
6.5. Umieszczanie obiektów nas uchuj cych w bibliotekach znaczników ............................ 267
6.6. Przyk ad. Pakiet zawieraj cy obiekty ledz ce nazw firmy ........................................ 269
6.7. Wykrywanie zdarze tworzenia i niszczenia sesji ....................................................... 275
6.8. Przyk ad. Obiekt nas uchuj cy, który zlicza sesje ...................................................... 276
Wy czanie obs ugi plików cookie ...................................................................... 282
6.9. Wykrywanie zmian w atrybutach sesji ...................................................................... 283
6.10. Przyk ad. Monitorowanie zamówie na jachty ......................................................... 283
6.11. Wykrywanie inicjalizacji i zniszczenia dania serwletu ............................................ 290
6.12. Przyk ad. Obliczanie obci enia serwera daniami ................................................. 291
6.13. Wykrywanie zmian atrybutów w daniach serwletów .............................................. 296
6.14. Przyk ad. Zatrzymywanie obiektu zbierania statystyk da ...................................... 297
6.15. Wykorzystanie wielu obiektów nas uchuj cych wspó pracuj cych ze sob ................. 299
ledzenie zamówie na towary z oferty dnia ....................................................... 300
Resetowanie licznika zamówie na oferty dnia ................................................... 306
6.16. Pe na definicja deskryptora wdro enia ................................................................... 311
Rozdzia 7. Podstawowe informacje na temat bibliotek znaczników ....................................................... 317
7.1. Komponenty biblioteki znaczników .......................................................................... 318
Klasa obs ugi znacznika ................................................................................... 319
Plik deskryptora biblioteki znaczników ............................................................... 320
Plik JSP .......................................................................................................... 321
Spis tre ci 7
7.2. Przyk ad. Prosty znacznik liczby pierwszej ................................................................. 322
7.3. Przypisywanie znacznikom atrybutów ....................................................................... 326
Atrybuty znacznika a klasa obs ugi znacznika ..................................................... 326
Atrybuty znacznika a deskryptor biblioteki znaczników ......................................... 327
Atrybuty znacznika a plik JSP ............................................................................ 328
7.4. Przyk ad. Znacznik liczby pierwszej o zmiennej d ugo ci ............................................ 328
7.5. Zamieszczanie tre ci znacznika w danych zwracanych przez znacznik ......................... 330
Tre znacznika a klasa obs ugi znacznika ......................................................... 330
Tre znacznika a deskryptor biblioteki znaczników ............................................ 331
Tre znacznika a plik JSP ................................................................................ 331
7.6. Przyk ad. Znacznik nag ówka ................................................................................... 332
7.7. Przyk ad. Znacznik debugowania ............................................................................. 335
7.8. Tworzenie plików znaczników .................................................................................. 337
7.9. Przyk ad. Prosty znacznik liczby pierwszej z u yciem pliku znacznika ........................... 339
7.10. Przyk ad. Znacznik liczby pierwszej o zmiennej d ugo ci z u yciem pliku znacznika ...... 340
7.11. Przyk ad. Znacznik nag ówka z u yciem pliku znacznika ............................................ 341
Rozdzia 8. Biblioteki znaczników. Funkcje zaawansowane .................................................................... 345
8.1. Operacje na tre ci znacznika .................................................................................. 346
8.2. Przyk ad. Znacznik filtruj cy kod HTML ..................................................................... 347
8.3. Przypisywanie atrybutom znaczników warto ci dynamicznych ..................................... 350
Dynamiczne warto ci atrybutów a klasa obs ugi znacznika .................................. 351
Dynamiczne warto ci atrybutów a deskryptor biblioteki znaczników ...................... 351
Dynamiczne warto ci atrybutów a plik JSP ......................................................... 351
8.4. Przyk ad. Prosty znacznik wykonuj cy p tl .............................................................. 352
8.5. Przypisywanie atrybutom znaczników warto ci w postaci z o onych obiektów .............. 356
Dynamiczne, z o one warto ci atrybutów a klasa obs ugi znacznika ..................... 356
Dynamiczne, z o one warto ci atrybutów a deskryptor biblioteki znaczników ......... 356
Dynamiczne, z o one warto ci atrybutów a plik JSP ............................................ 357
8.6. Przyk ad. Znacznik formatuj cy tabele ..................................................................... 357
8.7. Tworzenie znaczników wykonuj cych p tle ............................................................... 362
8.8. Przyk ad. Znacznik forEach ..................................................................................... 363
8.9. Tworzenie funkcji j zyka wyra e ............................................................................. 367
8.10. Przyk ad. Ulepszony znacznik debugowania ............................................................. 369
8.11. Obs uga zagnie d onych znaczników niestandardowych ........................................... 372
8.12. Przyk ad. Znacznik If-Then-Else ............................................................................... 373
Rozdzia 9. Biblioteka standardowych znaczników JSP (JSTL) ............................................................... 379
9.1. Instalacja biblioteki JSTL ........................................................................................ 380
9.2. Znacznik c:out ....................................................................................................... 381
9.3. Znaczniki c:forEach i c:forTokens ............................................................................ 382
9.4. Znacznik c:if .......................................................................................................... 383
9.5. Znacznik c:choose ................................................................................................. 384
9.6. Znaczniki c:set i c:remove ...................................................................................... 386
9.7. Znacznik c:import .................................................................................................. 388
9.8. Znaczniki c:url i c:param ........................................................................................ 391
9.9. Znacznik c:redirect ................................................................................................ 392
9.10. Znacznik c:catch .................................................................................................... 394
8 Core Java Servlets i JavaServer Pages
Rozdzia 10. Podstawy platformy Struts ................................................................................................... 397
10.1. Podstawy Struts ................................................................................................... 398
Ró ne strony Struts ......................................................................................... 398
Zalety platformy Apache Struts w porównaniu z MVC
z obiektem RequestDispatcher i JSP EL ........................................................ 398
Wady platformy Apache Struts w porównaniu z MVC
z obiektem RequestDispatcher i EL .............................................................. 400
10.2. Instalacja i konfiguracja platformy Struts ................................................................ 402
Instalacja Struts .............................................................................................. 402
Testowanie platformy Struts ............................................................................. 404
Tworzenie w asnych aplikacji Struts ................................................................... 405
Dodawanie Struts do ju istniej cej aplikacji internetowej ................................... 405
10.3. Proces przetwarzania Struts i sze kroków do jego implementacji ........................... 406
Proces przetwarzania na platformie Struts ......................................................... 406
Sze podstawowych kroków w pracy ze Struts .................................................. 410
10.4. Przetwarzanie da przez obiekty Action ................................................................ 414
Dzia anie obiektów Action ................................................................................. 415
Przyk ad. Odwzorowanie jednego wyniku ............................................................ 418
Przyk ad. Odwzorowanie kilku wyników ............................................................... 424
czenie wspó u ytkowanych odwzorowa warunków .......................................... 432
10.5. Obs uga parametrów da w komponentach bean formularzy .................................. 434
Proces przetwarzania na platformie Struts z uwzgl dnieniem komponentów bean .....434
Sze podstawowych kroków w pracy ze Struts .................................................. 436
Dzia anie komponentów bean formularzy ........................................................... 438
Wy wietlanie w a ciwo ci komponentu bean ...................................................... 440
Przyk ad. Komponenty bean formularza i danych wynikowych ............................... 442
10.6. Wst pne wype nianie formularzy danymi i ich ponowne wy wietlanie ......................... 453
Proces przetwarzania na platformie Struts ......................................................... 454
Sze podstawowych kroków w pracy ze Struts .................................................. 455
Wykorzystanie znaczników html: platformy Struts ............................................... 458
Wype nianie formularzy danymi pocz tkowymi .................................................... 459
Przyk ad. Wype nianie formularzy danymi pocz tkowymi ...................................... 460
Strategie tworzenia adresów URL dla obiektów Action ........................................ 469
Ponowne wy wietlanie formularzy ..................................................................... 472
Przyk ad. Ponowne wy wietlanie formularza ....................................................... 475
Rozdzia 11. Platforma Struts. Funkcje dodatkowe ................................................................................... 485
11.1. Wykorzystanie plików w a ciwo ci .......................................................................... 486
Zalety plików w a ciwo ci ................................................................................. 486
Dzia anie platformy Struts z uwzgl dnieniem plików w a ciwo ci .......................... 486
Sposób u ywania plików w a ciwo ci ................................................................ 487
Przyk ad. Proste komunikaty ............................................................................. 491
Klucze dynamiczne .......................................................................................... 496
Komunikaty parametryzowane .......................................................................... 497
11.2. Umi dzynaradawianie aplikacji ............................................................................... 498
adowanie j zykowych wersji pliku w a ciwo ci .................................................. 498
Definiowanie ustawie j zykowych w przegl darkach .......................................... 498
Przyk ad. Polska, hiszpa ska i francuska wersja j zykowa ................................... 499
Wyniki ............................................................................................................ 500
Spis tre ci 9
11.3. Definiowanie uk adu stron przy u yciu modu u Tiles ............................................... 501
Powody, dla których warto u ywa Tiles ............................................................. 501
Wymagania wst pne modu u Tiles .................................................................... 502
Cztery kroki w pracy z Tiles ............................................................................... 503
Prosta aplikacja wykorzystuj ca Tiles ................................................................ 506
Obs uga wzgl dnych adresów URL .................................................................... 510
Przyk ad. Aplikacja e-boats ............................................................................... 511
11.4. Wykorzystanie Tiles Definitions .............................................................................. 519
Powody, dla których warto u ywa Tiles Definitions ............................................ 521
Pi kroków w pracy z Tiles Definitions .............................................................. 522
Przyk ad. Aplikacja e-boats wykorzystuj ca modu Tiles Definitions ...................... 525
Rozdzia 12. Platforma Struts. Weryfikacja poprawno ci danych wpisanych przez u ytkownika ...... 529
12.1. Weryfikacja poprawno ci danych w klasie Action ..................................................... 530
Proces przetwarzania Struts ............................................................................. 531
Przeprowadzenie weryfikacji danych w klasie Action ............................................ 531
Przyk ad. Wybór kolorów i rozmiarów czcionek wykorzystywanych w yciorysie ....... 534
12.2. Weryfikacja poprawno ci danych w komponencie bean formularza ............................ 541
Proces przetwarzania Struts ............................................................................. 542
Przeprowadzenie weryfikacji danych w komponencie ActionForm .......................... 542
Przyk ad. Wybór kolorów i rozmiarów czcionek
wykorzystywanych w yciorysie (wersja druga) ................................................ 546
Parametryzowane komunikaty o b dach ........................................................... 553
Przyk ad. Weryfikacja poprawno ci danych
z wykorzystaniem parametryzowanych komunikatów ....................................... 553
12.3. Wykorzystanie platformy automatycznej weryfikacji poprawno ci danych .................... 556
Weryfikacja r czna a weryfikacja automatyczna .................................................. 556
Weryfikacja na kliencie a weryfikacja na serwerze .............................................. 557
Proces przetwarzania Struts ............................................................................. 558
Konfiguracja mechanizmu automatycznej weryfikacji danych ................................ 559
Przyk ad. Automatyczna weryfikacja poprawno ci danych .................................... 565
Dodatek A Tworzenie aplikacji przy u yciu Apache Ant ........................................................................... 575
A.1. Najwa niejsze zalety Ant ......................................................................................... 576
A.2. Instalacja i konfiguracja Ant .................................................................................... 576
A.3. Tworzenie projektu Ant ........................................................................................... 577
Definiowanie projektu Ant ................................................................................. 578
Definiowanie celów .......................................................................................... 580
Przypisywanie zada do celów .......................................................................... 581
Uruchamianie celu Ant ..................................................................................... 581
A.4. Przegl d najcz ciej u ywanych zada Ant ............................................................... 582
Zadanie echo .................................................................................................. 582
Zadanie tstamp ............................................................................................... 583
Zadanie mkdir ................................................................................................. 584
Zadanie delete ................................................................................................ 584
Zadanie copy .................................................................................................. 586
Zadanie javac .................................................................................................. 588
A.5. Przyk ad. Prosty projekt Ant .................................................................................... 591
A.6. Tworzenie aplikacji internetowej przy u yciu Ant ...................................................... 596
Zale no ci mi dzy celami Ant ........................................................................... 597
10 Core Java Servlets i JavaServer Pages
A.7. Przyk ad. Wykonanie aplikacji internetowej ............................................................... 598
Cel prepare ..................................................................................................... 600
Cel copy ......................................................................................................... 601
Cel build ......................................................................................................... 602
A.8. Tworzenie pliku WAR przy u yciu Ant ........................................................................ 603
Zadanie jar ..................................................................................................... 603
Zadanie manifest ............................................................................................ 605
A.9. Przyk ad. Tworzenie pliku WAR aplikacji internetowej ................................................. 606
Cel war ........................................................................................................... 607
Skorowidz ..................................................................................................................................................... 611
1
U ywanie i wdra anie
aplikacji internetowych
W tym rozdziale:
Cele aplikacji internetowych
Struktura aplikacji internetowych
Rejestrowanie aplikacji internetowych
Strategie rozwoju i wdra ania aplikacji internetowych
Pliki WAR
Wspó u ytkowanie danych przez aplikacje internetowe
W ramach aplikacji internetowych mo na tworzy zwarte kolekcje serwletów, stron Java
Server Pages (JSP), bibliotek znaczników, dokumentów HTML (Hypertext Markup Language),
obrazków, arkuszy stylów i innych tre ci przeznaczonych dla internetu. Z kolekcji tych mo na
korzysta na dowolnym serwerze zgodnym ze specyfikacj serwletów. Prawid owo zaprojek-
towane aplikacje internetowe mo na przenosi z jednego serwera na inny albo umieszcza
w innej lokalizacji na tym samym serwerze bez konieczno ci wprowadzania zmian do ser-
wletów, stron JSP czy plików HTML wchodz cych w sk ad aplikacji.
W ten sposób nawet z o one aplikacje mo na przenosi bez wi kszego wysi ku, u atwiaj c ich
wielokrotne wykorzystywanie. Ponadto dzi ki temu, e ka da aplikacja internetowa posiada
w asn struktur katalogów, sesje, kontekst ServletContext i modu adowania klas, u ywanie
aplikacji internetowej upraszcza nawet pocz tkowe etapy rozwoju, poniewa znacznie
mniej uwagi trzeba po wi ca na koordynacj poszczególnych elementów ca ego opraco-
wanego rozwi zania.
18 Core Java Servlets i JavaServer Pages
1.1. Cele aplikacji internetowych
Aplikacje internetowe maj trzy g ówne zalety  u atwiaj odpowiednie zorganizowanie
zasobów, wdro ona aplikacja charakteryzuje si przeno no ci , a ponadto atwiej jest unikn
konfliktów mi dzy ró nymi aplikacjami internetowymi. Ka da z tych zalet zostanie omówiona
nieco szerzej.
Organizacja
Pierwsza zaleta aplikacji internetowych wyp ywa z faktu, e wszystko ma w nich swoje miejsce
 dla ka dego rodzaju zawarto ci przeznaczona jest standardowa lokalizacja. Poszczególne
pliki klas Java zawsze znajduj si w katalogu o nazwie WEB-INF/classes, pliki JAR (zbiory
plików klas Java) zawsze umieszczane s w katalogu WEB-INF/lib, plik konfiguracyjny
web.xml zawsze znajduje si w katalogu WEB-INF i tak dalej. Pliki bezpo rednio dost pne
dla klientów (na przyk ad przegl darek internetowych) umieszczane s w g ównym katalogu
aplikacji internetowej lub dowolnym jego podkatalogu z wyj tkiem WEB-INF.
Cz sto zdarza si , e programista ko czy prac nad jednym projektem i przechodzi do innego
zespo u projektowego. Dzi ki standardowej organizacji zasobów aplikacji nie trzeba na nowo
poznawa struktury aplikacji za ka dym razem, gdy rozpoczyna si prac nad nowym pro-
jektem. Nowy programista rozpoczynaj cy prac nad aplikacj nie musi równie traci czasu
na rozpoznanie sposobu organizowania poszczególnych rodzajów plików.
Przeno no
Poniewa specyfikacja serwletów przewiduje okre lon organizacj plików, na ka dym serwe-
rze zgodnym z t specyfikacj mo na w a ciwie od razu wdra a i uruchamia aplikacj .
Dzi ki temu istnieje du a swoboda w wyborze dostawcy docelowego serwera WWW. Je li
tylko wybrany serwer jest zgodny ze specyfikacj , ka d aplikacj mo na  w wi kszo ci
przypadków bez adnych zmian  wdro y i uruchomi na serwerze pochodz cym od innego
producenta. Mo na na przyk ad utworzy aplikacj na darmowym serwerze WWW, a nast p-
nie jej wersj przedprodukcyjn uruchomi ju na bardziej stabilnym serwerze, dla którego
producent wiadczy odpowiednie wsparcie techniczne.
Separacja
Poszczególne aplikacje internetowe wdro one na tym serwerze nie wchodz ze sob w konflikt.
Ka da aplikacja ma w asny adres URL, za pomoc którego mo na do niej uzyska dost p,
w asny obiekt ServletContext i tak dalej. Dwie aplikacje wdro one na tym samym serwerze
dzia aj tak, jakby by y uruchamiane na dwóch oddzielnych serwerach, adna z tych aplikacji
nie musi równie mie dost pu do drugiej.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 19
Fakt ten jeszcze bardziej upraszcza proces tworzenia i wdra ania aplikacji internetowych.
Programista nie musi bowiem w ogóle zastanawia si nad tym, w jaki sposób powinno si
integrowa tworzon aplikacj z aplikacjami ju dzia aj cymi na tym samym serwerze.
Obecnie istnieje kilka sposobów, dzi ki którym aplikacje mog ze sob wspó pracowa
 zostan one opisane w dalszej cz ci rozdzia u. Jednak w znakomitej wi kszo ci przy-
padków aplikacje wdra a si niezale nie od siebie.
1.2. Struktura aplikacji internetowych
Jak ju wcze niej wspomniano, aplikacja internetowa ma standardowy format i jest przeno na
do wszystkich serwerów WWW lub serwerów aplikacji zgodnych ze specyfikacj . G ówny
katalog aplikacji to zwyk y katalog o dowolnej nazwie. Wewn trz tego katalogu znajduj
si lokalizacje przeznaczone dla poszczególnych elementów. W tym punkcie opisane zostan
rodzaje elementów, z jakich mo e sk ada si aplikacja, oraz lokalizacje, w których elementy
powinny si znajdowa .
Lokalizacje poszczególnych rodzajów plików
Na rysunku 1.1 przedstawiono standardow struktur przyk adowej aplikacji internetowej.
Aby wykona kolejne kroki procesu tworzenia w asnej aplikacji internetowej, nale y pobra
z serwera ftp://ftp.helion.pl/przyklady/jsp2w2.zip aplikacj app-blank i wykona instrukcje opi-
sane w punkcie 1.6 ( Tworzenie prostej aplikacji internetowej ).
Rysunek 1.1.
Struktura
standardowej
aplikacji
internetowej
Strony JSP
Strony JSP nale y umieszcza w g ównym katalogu aplikacji internetowej lub w jego pod-
katalogu o dowolnej nazwie, innej ni WEB-INF i META-INF. Serwery nigdy nie udost p-
niaj klientom plików znajduj cych si w katalogach WEB-INF i META-INF. Gdy aplikacja
internetowa zostanie ju zarejestrowana (wi cej na ten temat w punkcie 1.3), nale y wskaza
serwerowi prefiks URL wskazuj cy aplikacj oraz zdefiniowa lokalizacj , w której znaj-
duje si katalog aplikacji internetowej. Zazwyczaj  cho nie jest to obowi zkowe  jako
20 Core Java Servlets i JavaServer Pages
prefiks URL wskazuje si po prostu nazw g ównego katalogu aplikacji. Po zarejestrowaniu
prefiksu strony JSP stan si dost pne za po rednictwem adresów URL w postaci http://
komputer/prefiksAplikacji/nazwapliku.jsp (je eli strony JSP znajduj si w g ównym kata-
logu aplikacji) albo http://komputer/prefiksAplikacji/podkatalog/nazwapliku.jsp (gdy strony
znajduj si w podkatalogu).
Od ustawie serwera zale y, czy plik domy lny, taki jak index.jsp, b dzie dost pny po wpi-
saniu adresu URL wskazuj cego jedynie katalog (na przyk ad http://komputer/prefiksAplikacji/)
bez zapisania odpowiedniego ustawienia w pliku konfiguracyjnym WEB-INF/web.xml. Je eli
index.jsp ma by domy lnym plikiem aplikacji, zalecane jest dodanie w pliku web.xml tej
aplikacji odpowiedniego elementu welcome-file-list. Na przyk ad poni szy fragment pliku
web.xml wskazuje, e je eli adres URL zawiera nazw katalogu, a nie zawiera nazwy pliku,
wówczas serwer powinien w pierwszej kolejno ci zwróci plik index.jsp, a w drugiej kolej-
no ci plik index.html. Je eli na serwerze nie ma adnego z tych dwóch plików, odpowied
b dzie zale e od serwera (na przyk ad wy wietlona zostanie zawarto katalogu).

index.jsp
index.html

Wi cej informacji na temat sposobu u ywania pliku web.xml znajduje si w rozdziale 2.,
 Kontrolowanie dzia ania aplikacji przy u yciu deskryptora web.xml .
Dokumenty HTML, obrazki i inne standardowe elementy aplikacji internetowej
Modu obs ugi serwletów i stron JSP stosuje identyczne regu y dla stron JSP oraz dla plików
HTML, obrazków GIF i JPEG, arkuszy stylów i innych dokumentów internetowych. Wszystkie
wymienione elementy s umieszczane dok adnie w tych samych lokalizacjach i udost pniane
za po rednictwem adresów URL w identycznej formie.
Pojedyncze serwlety, komponenty JavaBeans i klasy pomocnicze
Serwlety oraz inne pliki z rozszerzeniem .class umieszcza si w katalogu WEB-INF/classes
albo w podkatalogu katalogu WEB-INF/classes o nazwie odpowiadaj cej nazwie pakietu.
Aby uzyska dost p do jednego z serwletów trzeba wskaza dla niego odpowiedni adres URL.
W tym celu w deskryptorze wdro enia web.xml, znajduj cym si w katalogu WEB-INF,
trzeba zdefiniowa element servlet-mapping. Wi cej informacji na ten temat znajduje si
w punkcie 1.3,  Rejestrowanie aplikacji internetowych na serwerze .
Dost p do serwletów mo na tak e uzyskiwa w inny sposób, który nie wymaga definiowania
odpowiedniego adresu URL. Do tego celu mo na u y adresu o postaci http://komputer/prefiks
Aplikacji/servlet/nazwaPakietu.NazwaSerwletu. U ywanie adresu o takiej postaci przy-
daje si w trakcie testowania mo liwo ci aplikacji, natomiast nie zaleca si jego u ywania
w aplikacjach produkcyjnych. Powodów jest kilka. Po pierwsze, je eli dla tego samego
serwletu zostanie równie zdefiniowany element servlet-mapping, b dzie mo na go wywo-
ywa na dwa ró ne sposoby, a to z kolei szybko zacznie utrudnia utrzymywanie aplikacji.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 21
Po drugie, poniewa deklaratywne zabezpieczenia aplikacji zale od adresu URL, przy u yciu
którego zasób jest udost pniany, mo e w ten sposób powsta luka w zabezpieczeniach. Po
trzecie, u ytkownik jest zmuszony wpisa adres URL, w którym znajduje si nazwa serwletu
ze wszystkimi jego kwalifikatorami, a takie adresy wygl daj ma o elegancko i s trudne do
zapami tania. Zatem w kategorii u yteczno ci aplikacji internetowej taki sposób wywo ywania
serwletów zyska by bardzo niskie noty. Po czwarte, je eli kiedykolwiek zajdzie potrzeba, by
zmieni nazw klasy albo umie ci klasy w nowym pakiecie, zmieni trzeba b dzie równie
sam adres URL. To z kolei poci gnie za sob wymóg zmiany wszystkich odwo a znajdu-
j cych si w aplikacji, w których u ywano dotychczasowego adresu URL. Oprócz tego, e
sama ta czynno b dzie do uci liwa, to jej wynik spowoduje zamieszanie równie w ród
samych u ytkowników, którzy przecie mogli zapisa adres w ród swoich ulubionych
zak adek, a po zmianie adresu serwletu adres ten przestanie dzia a i u yteczno aplikacji
znowu ucierpi.
Zalecamy jawne blokowanie dost pu do serwletów wchodz cych w sk ad aplikacji internetowej
bez odpowiednio odwzorowanego adresu URL. Odwzorowanie takie mo na zdefiniowa za
pomoc elementu servlet-mapping pliku web.xml. Przyk adowe odwzorowanie znajduje
si w pliku web.xml aplikacji app-blank, któr mo na pobra z witryny ftp://ftp.helion.pl/
przyklady/jsp2w2.zip.
Serwlety, komponenty JavaBeans i klasy pomocnicze znajduj ce si w pakietach JAR
Je eli serwlety lub inne pliki z rozszerzeniem .class wchodz w sk ad pakietów JAR, wów-
czas pliki JAR powinny si znajdowa w katalogu WEB-INF/lib. Je eli klasy znajduj si
w pakietach, wówczas wewn trz pliku JAR klasy te powinny znajdowa si w katalogu
o nazwie odpowiadaj cej nazwie ich pakietu. Wi kszo serwerów umo liwia wspó u yt-
kowanie plików JAR przez ró ne aplikacje internetowe. Funkcja ta nie jest jednak standardem,
a konkretny sposób jej dzia ania zale y od rodzaju serwera. Na serwerze Tomcat wspó u yt-
kowane pliki JAR umieszcza si w katalogu katalog_tomcat/shared/lib.
Deskryptor wdro enia
Deskryptor wdro enia, czyli plik web.xml, powinien znajdowa si w podkatalogu WEB-INF
katalogu g ównego aplikacji internetowej. Szczegó owe informacje na temat sposobu u ywania
pliku web.xml znajduj si w rozdziale 2.,  Kontrolowanie dzia ania aplikacji przy u yciu
pliku web.xml . Warto zwróci uwag , e niektóre serwery mog obs ugiwa globalny plik
web.xml, dotycz cy wszystkich aplikacji internetowych. Na przyk ad serwer Tomcat wyko-
rzystuje plik katalog_tomcat/conf/web.xml, w którym znajduj si globalne ustawienia
konfiguracyjne. Plik taki jest jednak cech charakterystyczn tylko tego serwera. Standardem
jest wy cznie plik web.xml definiowany dla ka dej aplikacji oddzielnie i umieszczany w ka-
talogu WEB-INF aplikacji internetowej.
Deskryptory bibliotek znaczników
Pliki b d ce deskryptorami bibliotek znaczników (ang. Tag Library Descriptor  TLD)
umieszcza si w katalogu WEB-INF lub jego dowolnym podkatalogu. Zaleca si jednak, by
deskryptory te umieszcza w podkatalogu tlds katalogu WEB-INF. Grupowanie deskryptorów
22 Core Java Servlets i JavaServer Pages
w jednym katalogu (na przyk ad o nazwie tlds) upraszcza proces zarz dzania nimi. Strony
JSP uzyskuj dost p do plików TLD znajduj cych si w WEB-INF za pomoc dyrektywy
taglib o nast puj cej postaci:
<%@ taglib uri="/WEB-INF/tlds/mójPlikTaglib.tld" & %>
Poniewa nie mamy do czynienia z klientem (takim jak cho by przegl darka internetowa),
lecz z serwerem, który wykorzystuje plik TLD, blokada dost pu do zawarto ci znajduj cej
si w katalogu WEB-INF w tym przypadku nie obowi zuje.
Gdy plik z rozszerzeniem .tld jest umieszczany wewn trz pliku JAR, powinien si on znaj-
dowa w katalogu META-INF lub w którym z jego podkatalogów. Konieczno zmiany
lokalizacji z WEB-INF na META-INF wynika z tego, e pliki JAR nie s archiwami aplikacji
WWW, a wi c nie zawieraj katalogu WEB-INF. Wi cej informacji na temat plików TLD
znajduje si w rozdziale 7.,  Biblioteki znaczników. Zagadnienia podstawowe .
Pliki znaczników
Pliki znaczników powinny znajdowa si w katalogu WEB-INF/tags lub jego podkatalogu.
Podobnie jak w przypadku plików TLD, pliki znaczników pozostaj dost pne dla stron JSP
nawet wówczas, gdy znajduj si w katalogu WEB-INF. Pliki znaczników równie deklaruje
si na stronie JSP przy u yciu dyrektywy taglib. Jednak zamiast uri nale y w ich przypadku
zdefiniowa atrybut tagdir. Je eli na przyk ad plik mójPlikZnaczników.tag umieszczony
zostanie w katalogu WEB-INF/tags aplikacji internetowej, dyrektywa taglib strony JSP
powinna mie nast puj c posta :
<%@ taglib tagdir="/WEB-INF/tags" & %>
W takim przypadku serwer automatycznie wygeneruje plik TLD dla plików znaczników,
zatem nie trzeba samodzielnie definiowa odpowiedniego odwzorowania.
Pliki znaczników mo na tak e do cza do plików JAR. Sam plik JAR powinien zosta
umieszczony w katalogu WEB-INF/lib, zgodnie z tym, co wspomniano ju wcze niej. Jednak
wewn trz pliku JAR pliki znaczników powinny znajdowa si w katalogu META-INF/tags.
W takim przypadku serwer nie wygeneruje automatycznie TLD, dlatego konieczne jest zadekla-
rowanie plików znaczników i cie ki dost pu w pliku z rozszerzeniem .tld. Warto zauwa y , e
plik z rozszerzeniem .tld mo e zawiera równie deklaracje w asnych znaczników innych
typów. Wi cej informacji na temat plików znaczników znajduje si w rozdziale 7.,  Biblioteki
znaczników. Zagadnienia podstawowe .
Plik manifestu WAR
Gdy tworzony jest plik WAR (wi cej na ten temat w punkcie 1.5), plik MANIFEST.MF zostaje
umieszczony w podkatalogu META-INF. Zazwyczaj narz dzie jar automatycznie tworzy
plik MANIFEST.MF i umieszcza go w katalogu META-INF, a w przypadku rozpakowywania
pliku WAR plik manifestu jest ignorowany. Czasami jednak trzeba jawnie zmodyfikowa
plik MANIFEST.MF, dlatego warto wiedzie , gdzie si on znajduje.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 23
1.3. Rejestrowanie aplikacji internetowych
na serwerze
Jak wspominano ju wcze niej, aplikacje internetowe s przeno ne. Bez wzgl du na to, jaki
serwer jest u ywany, pliki aplikacji s przechowywane w takiej samej strukturze katalogów, a
dost p do nich uzyskuje si za po rednictwem adresów URL w takiej samej postaci. Na ry-
sunku 1.2 przedstawiono struktur adresów URL, których nale a oby u y dla najprostszej
aplikacji o nazwie myWebApp. W tym punkcie opisane zostan sposoby instalowania i wyko-
nywania prostej aplikacji internetowej na ró nych platformach.
Rysunek 1.2.
Struktura
aplikacji
internetowej
myWebApp
Same aplikacje internetowe s w pe ni przeno ne, natomiast ju przebieg procesu rejestracji
aplikacji zale y od serwera. Aby na przyk ad przenie aplikacj myWebApp z jednego serwera
na drugi, nie trzeba wprowadza adnych zmian w strukturze katalogów widocznej na ry-
sunku 1.2, natomiast umiejscowienie katalogu g ównego aplikacji (w tym przypadku jest to
myWebApp) zale y od rodzaju u ywanego serwera. Podobnie od rodzaju serwera zale y sam
sposób wskazywania serwerowi, e aplikacja powinna by wywo ywana przy u yciu adresu
URL w postaci http://komputer/myWebApp/.
W tym punkcie przyj to za o enie, e wszystkie kroki zmierzaj ce do zainstalowania i skon-
figurowania serwera zosta y ju wykonane. Wi cej informacji na temat konfiguracji serwe-
ra mo na znale w jego dokumentacji, w pierwszym rozdziale pierwszego tomu niniejszej
ksi ki lub (w przypadku u ytkowników serwera Tomcat) w uaktualnianym na bie co prze-
wodniku po instalacji i konfiguracji serwera, dost pnym w witrynie http://www.coreservlets.
com. W tym miejscu zaprezentowany zostanie tylko krótki przyk ad, a nast pnie w jednym
z kolejnych podpunktów opisana zostanie procedura rejestracji na serwerze Tomcat. Szcze-
gó owy opis procesu wdro enia przyk adowej aplikacji internetowej na serwerze Tomcat
zostanie przedstawiony w punkcie 1.6,  Tworzenie prostej aplikacji internetowej .
Zgodnie z informacjami zawartymi w punkcie 1.4,  Strategie rozwoju i wdra ania aplikacji
internetowych , standardow strategi jest tworzenie aplikacji w rodowisku programistycz-
nym i regularne kopiowanie jej do poszczególnych katalogów wdro eniowych w celu przete-
stowania rozwi zania na ró nych serwerach. Odradza si umieszczanie katalogu rozwojowego
24 Core Java Servlets i JavaServer Pages
bezpo rednio w katalogu wdro eniowym serwera, poniewa znacznie utrudni to wdro enie
aplikacji na kilku serwerach, trudno b dzie pracowa nad aplikacj w czasie jej dzia ania,
a tak e utrudnione zostanie nadanie odpowiedniej organizacji plików. Lepszym rozwi zaniem
jest u ycie oddzielnego katalogu rozwojowego i zastosowanie jednej ze strategii opisanych
w punkcie 1.4,  Strategie rozwoju i wdra ania aplikacji internetowych . Najprostszym rozwi -
zaniem jest utworzenie skrótu (w systemie Windows) lub dowi zania symbolicznego (w ro-
dowisku UNIX/Linux), prowadz cego do katalogów wdro eniowych poszczególnych serwe-
rów, oraz kopiowanie ca ego katalogu rozwojowego za ka dym razem, gdy przyjdzie czas na
wdro enie aplikacji. Na przyk ad w systemie Windows przy u yciu prawego przycisku myszy
mo na przeci gn folder rozwojowy do utworzonego skrótu, zwolni przycisk i wybra
polecenie Kopiuj.
Rejestrowanie aplikacji internetowych na serwerze Tomcat
Tworzenie aplikacji internetowej na serwerze Tomcat polega na utworzeniu odpowiedniej
struktury katalogów i skopiowanie jej do katalogu katalog_tomcat/webapps. Za ca reszt
odpowiada ju sam serwer. Mo liwo wdra ania aplikacji internetowych przez kopiowanie
struktury katalogów do jednego z katalogów serwera to tak zwane wdra anie na gor co
(ang. hot-deployment) albo wdra anie automatyczne (ang. auto-deployment). Katalog
w strukturze katalogów serwera, który odpowiada za t funkcj , to tak zwany katalog
wdra ania na gor co (ang. hot-deploy directory) albo katalog wdra ania automatycznego
(ang. auto-deploy directory). Wi kszo serwerów WWW, je li nie wszystkie wspó czesne
serwery WWW, obs uguje taki w a nie sposób wdra ania aplikacji. Aby zwi kszy kontrol
nad procesem wdro enia, mo na odpowiednio zmodyfikowa zawarto pliku katalog_
tomcat/conf/server.xml (jest to plik charakterystyczny tylko dla serwera Tomcat), tak aby
odwo ywa si on do aplikacji.
Poni ej przedstawiono kolejne czynno ci, jakie trzeba wykona , aby utworzy aplikacj inter-
netow dost pn za po rednictwem adresu URL rozpoczynaj cego si od http://komputer/
myWebApp.
1. Utworzy struktur katalogów dla aplikacji internetowej, w której katalog
g ówny b dzie nosi nazw myWebApp. Poniewa jest to nasza w asna struktura
rozwojowa, mo na j umie ci w dowolnie wybranej lokalizacji. Struktura katalogów
powinna by zgodna ze struktur przedstawion w punkcie 1.2,  Struktura aplikacji
internetowych . Aby zmniejszy liczb czynno ci, jakie nale y wykona w ramach
tego kroku, z ftp://ftp.helion.pl/przyklady/jsp2w2.zip mo na pobra aplikacj app-
blank. Zawiera ona wszystkie niezb dne katalogi oraz przyk adowy deskryptor
wdro enia web.xml. Pozostaje wówczas tylko zmieni nazw katalogu g ównego
app-blank na myWebApp.
Je eli natomiast zapadnie decyzja o r cznym utworzeniu wymaganych katalogów,
nale y post powa zgodnie z dalszym opisem. Najpierw trzeba utworzy katalog
o nazwie myWebApp  mo e si on znajdowa w dowolnej lokalizacji w systemie
poza katalogiem instalacyjnym serwera. W katalogu tym trzeba utworzy podkatalog
o nazwie WEB-INF, w nim za utworzy kolejny katalog classes. Nast pnie nale y
utworzy deskryptor wdro enia web.xml i umie ci go w katalogu WEB-INF.
Szczegó owe informacje na temat deskryptora wdro enia znajduj si w rozdziale 2.,
 Kontrolowanie dzia ania aplikacji przy u yciu deskryptora web.xml . Na razie

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 25
wystarczy tylko skopiowa plik web.xml znajduj cy si w katalogu katalog_tomcat/
webapps/ROOT/WEB-INF albo u y wersji deskryptora znajduj cej si w aplikacji
app-blank.
Po utworzeniu odpowiedniej struktury katalogów nale y w katalogu myWebApp
umie ci prost stron JSP, a do katalogu WEB-INF/classes skopiowa prosty
serwlet o nazwie MyServlet.class.
2. Zadeklarowa serwlet i skierowa go na odpowiedni adres URL przez
wprowadzenie odpowiednich zmian w pliku web.xml b d cym deskryptorem
wdro enia. W odró nieniu od stron JSP serwlety musz by deklarowane jawnie.
Nale y zatem poda pe n cie k dost pu do klasy serwletu, aby wskaza serwerowi,
e serwlet ten istnieje. Dodatkowo konieczne jest wskazanie serwerowi adresów
URL, które po wpisaniu przez u ytkownika powinny wywo a serwlet MyServlet.class.
Obydwie wspomniane czynno ci mo na zrealizowa przez wstawienie w pliku
web.xml poni szego kodu:

MyName
mypackage.MyServlet


MyName
/MyAddress

Element servlet oraz jego podelementy wskazuj serwerowi nazw , za pomoc
której serwlet b dzie deklarowany, a tak e pe n cie k dost pu do klasy serwletu.
Element servlet-mapping oraz jego podelementy wskazuj serwerowi serwlet,
który ma by wywo ywany, gdy klient wywo a adres URL odpowiadaj cy wzorcowi
wskazanemu jako warto elementu url-pattern. Zatem serwlet zadeklarowany
jako MyName b dzie wywo ywany przez adres w postaci http://komputer/
myWebApp/MyAddress.
3. Skopiowa katalog myWebApp do katalogu katalog_tomcat/webapps. Za ó my,
e serwer Tomcat zosta zainstalowany w katalogu C:\katalog_tomcat. Katalog
myWebApp powinno si zatem skopiowa do katalogu webapps i uzyska w ten
sposób nast puj ce cie ki dost pu: C:\katalog_tomcat\webapps\myWebApp\
HelloWebApp.jsp, C:\katalog_tomcat\webapps\myWebApp\WEB-INF\classes\
HelloWebApp.class oraz C:\katalog_tomcat\webapps\myWebApp\WEB-INF\
web.xml. Katalog ten mo na by nast pnie zawrze w pliku WAR (wi cej na ten
temat w punkcie 1.5) i umie ci go w katalogu C:\katalog_tomcat\webapps.
4. Opcjonalnie  w pliku server.xml dopisa element Context. Domy lnie Tomcat
skonfiguruje aplikacj internetow w taki sposób, by prefiks jej adresu URL dok adnie
odpowiada nazwie g ównego katalogu tej aplikacji. Je eli takie rozwi zanie b dzie
wystarczaj ce, mo na pomin krok opisywany w tym punkcie. Je eli natomiast
konieczne jest zmodyfikowanie tego etapu rejestracji aplikacji, w pliku katalog_tomcat/
conf/server.xml mo na doda element Context. Przed rozpocz ciem edycji
zawarto ci pliku server.xml nale y utworzy jego kopi bezpiecze stwa, poniewa
nawet drobny b d sk adniowy uniemo liwi prawid owe uruchomienie serwera Tomcat.
Natomiast w nowszych wersjach serwera Tomcat zaleca si , by element Context
(oraz jego podelementy) umieszcza w pliku context.xml. Plik context.xml trzeba
wówczas umie ci obok pliku web.xml, w katalogu WEB-INF aplikacji internetowej.
26 Core Java Servlets i JavaServer Pages
Element Context ma kilka atrybutów, które s udokumentowane na stronie pod
adresem http://tomcat.apache.org/tomcat-5.5-doc/config/context.html. Za pomoc
tego elementu mo na decydowa , czy nale y u ywa plików cookies albo czy
nale y przepisywa adresy URL w celu ledzenia sesji; mo na tak e w cza
i wy cza mo liwo prze adowywania serwletów (to znaczy monitorowa klasy
pod k tem zachodz cych w nich zmian i prze adowywa serwlety tych klas,
których pliki na dysku uleg y zmianie). Mo na równie ustawia poziomy
debugowania. Jednak w przypadku prostych aplikacji internetowych wystarczy
u ycie tylko dwóch wymaganych atrybutów: path (prefiks adresu URL) oraz
docBase (bazowy katalog instalacyjny dla aplikacji internetowych wzgl dem
katalogu katalog_tomcat/webapps). Definicja elementu Context powinna wygl da
podobnie do poni szej:

Nale y pami ta , by jako prefiks adresu URL nie podawa prefiksu /examples,
poniewa jest on ju u ywany przez Tomcat jako prefiks dla przyk adowych aplikacji
internetowych.
Na serwerze Tomcat nie nale y u ywa prefiksu /examples w roli prefiksu adresów
URL aplikacji internetowych.
5. Wywo a stron JSP i serwlet. Adres URL http://komputer/myWebApp/
myPage.jsp wywo a stron JSP, za adres http://komputer/myWebApp/MyAddress
spowoduje wywo anie serwletu. W trakcie rozwoju aplikacji prawdopodobnie jako
nazwa komputera u ywana b dzie nazwa localhost. W podawanych adresach URL
za o ono, e plik konfiguracyjny serwera Tomcat (katalog_tomcat/conf/server.xml)
zmodyfikowano w taki sposób, by u ywany by port numer 80, zgodnie z zaleceniami
w instrukcji instalacji i konfiguracji serwera, znajduj cej si w witrynie
http://www.coreservlets.com/. Je eli takiej zmiany nie wprowadzono,
nale y u y adresów w postaci http://komputer:8080/myWebApp/myPage.jsp
oraz http://komputer:8080/myWebApp/MyAddress.
Rejestrowanie aplikacji internetowych na innych serwerach
Pierwsze dwie czynno ci opisane w poprzednim podrozdziale dotycz tworzenia przeno nej
cz ci aplikacji internetowej i b d przebiega identycznie na ka dym serwerze zgodnym
ze specyfikacj serwletów. Natomiast czynno ci dotycz ce ju samego procesu rejestracji
s charakterystyczne dla serwera Tomcat. Nie zmienia to jednak faktu, e rejestrowanie
aplikacji na innych serwerach przebiega bardzo podobnie. W kolejnych podpunktach krótko
zostan opisane sposoby rejestrowania aplikacji na kilku najbardziej popularnych obecnie
serwerach.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 27
Serwer BEA WebLogic
Podobnie jak Tomcat, serwer WebLogic udost pnia katalog automatycznego wdra ania,
s u cy do rejestrowania i wdra ania aplikacji internetowych. Najpierw, je eli jeszcze nie
zosta o to zrobione, trzeba utworzy now domen o nazwie myDomain. Domen mo na
utworzy przy u yciu kreatora konfiguracji serwera WebLogic config.cmd w systemie Win-
dows lub config.sh w rodowiskach UNIX/Linux (obydwie wersje znajduj si w katalogu
bea/katalog_weblogic/common/bin). Gdy domena zostanie ju utworzona, nale y skopiowa
ca struktur katalogów aplikacji internetowej (w tym równie jej katalog g ówny) lub plik
WAR do katalogu bea/user_projects/domains/myDomain/applications. Do wdro enia aplikacji
mo na tak e u y konsoli WWW serwera WebLogic. W tym celu nale y zalogowa si do
konsoli pod adresem http://localhost:7001/console/ (przy za o eniu, e nie zmieniono domy l-
nych ustawie portu oraz e serwer jest uruchomiony na komputerze lokalnym). W panelu
konsoli po lewej stronie nale y rozwin w ze Deployments i klikn pozycj Web Application
Modules, po czym klikn polecenie Deploy a New Web Application Module. W ten sposób
uruchomiony zostanie kreator wdro enia dzia aj cy w przegl darce, w którym wystarczy
wykonywa kolejne wy wietlane instrukcje. Po wdro eniu aplikacji internetowej strona JSP
b dzie dost pna pod adresem http://localhost:7001/myWebApp/myPage.jsp, za serwlet b dzie
dost pny pod adresem http://localhost:7001/myWebApp/MyAddress.
JBoss
Zarejestrowanie aplikacji internetowej na serwerze JBoss jest niemal równie proste, jak
w przypadku serwera Tomcat. Tak naprawd JBoss domy lnie u ywa osadzonego serwera
WWW Tomcat. Aby zarejestrowa aplikacj , nale y najpierw zmieni nazw katalogu
g ównego myWebApp na myWebApp.war. W istocie nie jest tworzony plik WAR, lecz jedynie
nazwa katalogu g ównego jest zmieniana w taki sposób, by ko czy a si s owem .war. JBoss
wymaga, by s owem .war ko czy y si nie tylko nazwy plików WAR (co jest zreszt wy-
magane na mocy specyfikacji serwletów), lecz równie nazwa g ównego katalogu aplikacji
internetowej. Po zmianie nazwy katalogu katalog myWebApp.war nale y skopiowa do
katalogu katalog_jboss/server/default/deploy. Je eli w trakcie instalacji serwera JBoss
adne domy lne ustawienia nie uleg y zmianie, strona JSP b dzie dost pna pod adresem
http://localhost:8080/myWebApp/myPage.jsp, natomiast serwlet b dzie wywo ywany adresem
http://localhost:8080/myWebApp/MyAddress. Je eli aplikacja zosta a spakowana w pliku
WAR, w celu jej wdro enia plik myWebApp.war trzeba umie ci w tym samym katalogu
serwera JBoss.
Caucho Resin
Aby skorzysta z funkcji automatycznego wdra ania na serwerze Caucho Resin, nale y skopio-
wa ca struktur katalogów aplikacji internetowej (w cznie z jej katalogiem g ównym)
lub plik WAR do katalogu katalog_resin/webapps. Je eli domy lne ustawienia serwera nie
zosta y zmienione, strona JSP stanie si dost pna pod adresem http://localhost:8080/myWebApp/
myPage.jsp, za serwlet b dzie dost pny pod adresem http://localhost:8080/myWebApp/
MyAddress.
28 Core Java Servlets i JavaServer Pages
1.4. Strategie rozwoju i wdra ania
aplikacji internetowych
Gdy wszystko b dzie ju przygotowane do rozpocz cia procesu tworzenia nowej aplikacji
internetowej, nale y wykona nast puj ce trzy czynno ci:
1. Utworzy struktur katalogów aplikacji. W katalogu rozwojowym trzeba
utworzy now struktur katalogów, zgodn ze struktur aplikacji internetowej
(w czaj c w to plik web.xml znajduj cy si w katalogu WEB-INF), opisan
we wcze niejszej cz ci tego rozdzia u. Najprostszym sposobem wykonania tej
czynno ci jest skopiowanie i zmiana nazwy aplikacji app-blank. (Jak pami tamy,
aplikacj app-blank oraz wszystkie inne przyk adowe kody ród owe prezentowane
w ksi ce mo na pobra z ftp://ftp.helion.pl/przyklady/jsp2w2.zip).
2. Napisa kod ród owy aplikacji. Strony HTML i JSP trzeba umie ci w katalogu
g ównym lub jego podkatalogach, z wyj tkiem podkatalogu WEB-INF i META-INF.
Poszczególne pliki klas j zyka Java nale y umie ci w katalogu WEB-INF/classes/
podkatalog_o_nazwie_zgodnej_z_nazw _pakietu. Pliki JAR powinny trafi
do katalogu WEB-INF/lib, pliki z rozszerzeniami .tag i .tagx do katalogu
WEB-INF/tags i tak dalej.
3. Wdro y aplikacj . Ca struktur katalogów aplikacji internetowej
(w tym równie jej katalog g ówny) trzeba skopiowa do katalogu wdra ania
automatycznego serwera. Istnieje kilka rozwi za upraszczaj cych to zadanie,
a najcz ciej stosowanymi s :
Skopiowanie struktury do skrótu lub dowi zania symbolicznego.
Wykorzystanie funkcji wdra ania udost pnianych przez zintegrowane rodowisko
programistyczne (IDE).
Wykorzystanie narz dzia Ant lub podobnego.
U ycie rodowiska IDE wraz z narz dziem Ant.
U ytkownicy dopiero poznaj cy dzia anie serwletów i stron JSP mog pozosta przy pierwszej
opcji, za rozpoznawanie sposobu dzia ania narz dzia Ant lub konkretnego rodowiska IDE
mo na rozpocz po zaznajomieniu si przynajmniej z podstawami serwletów i stron JSP.
Trzeba jednak zaznaczy , e nie wspomniano o opcji polegaj cej na umieszczeniu kodu
bezpo rednio w katalogu wdro eniowym serwera. Wprawdzie to w a nie rozwi zanie najcz -
ciej wybieraj pocz tkuj cy programi ci, wachlarz jego zastosowa w bardziej zaawansowa-
nych zadaniach jest tak skromny, e zaleca si , by nie stosowa go ju na samym pocz tku.
W kolejnych podpunktach opisane zostan wszystkie cztery wspomniane opcje.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 29
Kopiowanie struktury do skrótu lub dowi zania symbolicznego
W systemie Windows nale y przej do katalogu nadrz dnego wobec katalogu automatycz-
nego wdro enia serwera. W przypadku serwera Tomcat b dzie to g ówny katalog instalacyjny
katalog_tomcat. Katalog automatycznego wdro enia nale y klikn prawym przyciskiem
myszy (na serwerze Tomcat b dzie to katalog webapps) i wybra polecenie Kopiuj. Nast pnie
trzeba przej do katalogu bezpo rednio nadrz dnego wobec g ównego katalogu rozwojowego
(czyli katalogu o jeden wy szego w hierarchii ni myWebApp), klikn go prawym przyci-
skiem myszy i wybra polecenie Wklej skrót (a nie zwyk e polecenie Wklej). Od teraz za ka -
dym razem, gdy przyjdzie ju czas na wdro enie aplikacji internetowej, nale y klikn i przy-
trzyma wci ni ty prawy przycisk myszy na katalogu rozwojowym (na przyk ad myWebApp)
i przeci gn go do skrótu do katalogu wdro enia, po czym zwolni przycisk myszy. Pojawi
si wówczas menu podr czne, w którym nale y wybra polecenie Kopiuj tutaj. Na rysunku 1.3
przedstawiono przyk adow konfiguracj , która u atwi wdra anie i testowanie aplikacji
prezentowanych w tym rozdziale na serwerach Tomcat, WebLogic, JBoss i Resin. W systemie
UNIX mo na u y dowi za symbolicznych (tworzonych poleceniem ln  s) w sposób po-
dobny do sposobu u ywania skrótów w systemie Windows.
Rysunek 1.3.
Wykorzystanie
skrótów w celu
uproszczenia
procesu
wdra ania
aplikacji
Zalet tego rozwi zania jest to, e jest ono bardzo proste. Jest ono zatem dobre dla osób
pocz tkuj cych, które chc si skupi na poznawaniu dzia ania serwletów i stron JSP, a nie
na narz dziach do wdra ania aplikacji czy rodowiskach IDE.
Wad przedstawionego rozwi zania jest to, e gdy u ywanych jest kilka serwerów, konieczne
jest powtarzanie operacji kopiowania. Za ó my na przyk ad, e w rodowisku rozwojowym
funkcjonuje kilka ró nych serwerów (Tomcat, Resin i tak dalej), na których regularnie trzeba
testowa implementowany kod ród owy. Druga wada polega na tym, e w takim rozwi zaniu
na serwer kopiowane s zarówno pliki z kodem ród owym Javy, jak i pliki klas, cho tak
naprawd niezb dne s tylko te ostatnie. Na serwerze biurkowym nie ma to wi kszego zna-
czenia, lecz gdy przyjdzie do wdro enia aplikacji na  prawdziwym serwerze produkcyjnym,
pliki z kodem ród owym nie powinny na niego trafi .
30 Core Java Servlets i JavaServer Pages
Wykorzystanie funkcji wdra ania udost pnianych przez IDE
Wi kszo rodowisk programistycznych do tworzenia serwletów i stron JSP (takich jak IBM
WebSphere Studio Application Developer, Sun ONE Studio, NetBeans, Oracle JDeveloper,
Borland JBuilder, Eclipse z MyEclipseIDE czy wtyczkami NitroX) pozwala na stosowanie
takich konfiguracji, w których jednym klikni ciem myszy mo liwe jest wdro enie aplikacji
internetowej na serwerze testowym, rozwojowym lub produkcyjnym.
Mimo i rodowiska IDE maj wiele niekwestionowanych zalet, nie s one jednak wolne od
wad. Wi kszo prawdziwych rodowisk IDE trzeba najpierw pozna , co zajmuje troch
czasu. Nie mo na si wi c skoncentrowa na zadaniach stricte programistycznych, przynajm-
niej na pocz tku. Ponadto cz sto si zdarza, e programi ci s przerzucani z jednego projektu na
drugi, a programi ci pracuj cy wspólnie nad dan aplikacj musz korzysta z takiego samego
rodowiska IDE. Gdy wi c programista przejdzie do innego zespo u projektowego, w którym
kompilacja i wdra anie aplikacji b d wykonywane w innym rodowisku IDE ni to, którego
dot d u ywa programista, konieczne b dzie poznanie nowego narz dzia i przyzwyczajenie
si do pracy w nim. To z kolei b dzie wymaga po wi cenia dodatkowego czasu.
U ywanie narz dzi ant, maven i im podobnych
Narz dzie ant zaimplementowane przez Apache Foundation dzia a podobnie jak make w rodo-
wisku UNIX. Jednak ant zosta napisany w Javie (dzi ki czemu jest przeno ny) i powszech-
nie uwa a si , e w porównaniu z make jest prostszy w u yciu i bardziej rozbudowany. Wielu
programistów serwletów i stron JSP kompiluje i wdra a aplikacje w a nie przy u yciu ant.
Sposób u ywania narz dzia ant zosta opisany w dodatku  Tworzenie Aplikacji przy u yciu
narz dzia Apache ant .
Ogólne informacje o ant s dost pne na stronie pod adresem http://ant.apache.org/manual/,
natomiast wskazówki dotycz ce u ywania ant z serwerem Tomcat znajduj si pod adresem
http://tomcat.apache.org/tomcat-5.5-doc/appdev/processes.html.
G ówn zalet takiego rozwi zania jest elastyczno  ant jest tak rozbudowany, e obs u-
guje wszystkie etapy od kompilacji kodu ród owego Javy, przez kopiowanie plików a po
generowanie plików archiwum WAR (wi cej na ten temat w punkcie 1.5).
Kolejnym narz dziem, które przyci ga uwag programistów Javy, jest narz dzie maven. Na-
rz dzie to rozszerza mo liwo ci ant, dlatego w niektórych przypadkach bardzo je przypomina,
a w niektórych zasadniczo si od niego ró ni. Wprawdzie maven jest równie elastyczny jak
ant, lecz jego twórcy skupili si przede wszystkim na prostocie jego u ywania. Dlatego te
wa n rol odgrywaj w nim konwencje. maven mo e na przyk ad skompilowa kod ród owy
nawet wówczas, gdy programista nie wska e go w folderze projektowym. Jest to mo liwe
dzi ki temu, e w maven przyj to, i zgodnie z konwencj kod ród owy j zyka Java znajduje
si w folderze src/main/java. Oczywi cie, za o enie to mo na zmienia , ale po co? Dzi ki
zastosowaniu konwencji pliki konfiguracyjne programu maven s , w odró nieniu od ant, bardzo
krótkie i zrozumia e. Wi cej informacji na temat tego narz dzia mo na znale na stronie
http://maven.apache.org.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 31
Wad zarówno ant, jak i maven jest konieczno po wi cenia okre lonego czasu na nauk
pracy z nimi. Zasadniczo krzywa uczenia si ant i maven jest bardziej stroma ni w przypadku
dwóch pierwszych technik prezentowanych w tym podrozdziale. Natomiast istotn ró nic
mi dzy po wi caniem czasu na nauk konkretnego rodowiska IDE a poznawaniem narz dzia
ant albo maven jest to, e w coraz wi kszej liczbie rodowisk ant i maven s u ywane jako
rozwi zanie standardowe, zamiast narz dzi charakterystycznych tylko dla tych rodowisk.
Mo na si wi c spodziewa , e wiadomo ci na temat ant lub maven b dzie mo na wyko-
rzystywa równie w dalszej przysz o ci.
U ywanie IDE wraz z narz dziem Ant
rodowiska IDE zwi kszaj efektywno pracy programistów, poniewa pomagaj tworzy
kod ród owy, natomiast ograniczaj mo liwo ci jego przenoszenia. Narz dzie ant z kolei
pozwala na tworzenie aplikacji przeno nych, lecz w adnej mierze nie pomaga pisa kodu
ród owego. Co z tym zrobi ?
Przepa dziel c ant i IDE mo na nieco zmniejszy przez u ywanie rodowiska IDE zinte-
growanego z ant. Dzi ki temu nadal mo na pracowa z ulubionym rodowiskiem programi-
stycznym, które wspiera proces pisania kodu ród owego, a jednocze nie jednym klikni -
ciem myszy wywo uje skrypty ant odpowiadaj ce za skompilowanie i wdro enie aplikacji.
Takiego rozwi zania mo na u ywa nawet w rodowiskach, które z ant nie s zintegrowane
(cho wi kszo wspó czesnych rodowisk tak integracj ju posiada), lecz b dzie to wyma-
ga prze czania si mi dzy wierszem polece a rodowiskiem programistycznym.
Takie podej cie doskonale sprawdza si w prawdziwych projektach. Programi ci u ywaj
ulubionych IDE, w których pisanie kodu jest bardziej efektywne, za sam projekt nie jest
nara ony na powstawanie niespójno ci w trakcie wdro enia, poniewa kompilacja i wdro-
enie s przeprowadzane przez ten sam przeno ny skrypt ant. Uczestniczyli my w projektach,
w których poszczególni programi ci nale cy do zespo u projektowego tworz cego jedn
aplikacj internetow korzystali z ró nych IDE; niektórzy z nich pracowali nawet w odmien-
nych systemach operacyjnych. Proces wdra ania aplikacji natomiast pozostawa spójny, a sami
programi ci byli zadowoleni z mo liwo ci u ywania swoich ulubionych narz dzi progra-
mistycznych. A czy zadowolenie programisty nie jest najwa niejsze?
1.5. Umieszczanie aplikacji internetowych
w plikach WAR
Pliki archiwum WWW (ang. Web archive  WAR) doskonale nadaj si do czenia w poje-
dynczym archiwum ca ych aplikacji internetowych. Jeden du y plik z aplikacj zast puj cy
wiele ma ych plików znacznie atwiej jest przenosi z serwera na serwer.
Archiwum WAR jest tak naprawd plikiem JAR z rozszerzeniem .war i tworzy si go zwyk ym
poleceniem jar. Aby na przyk ad umie ci ca aplikacj aplikacja_internetowa w pliku
WAR o nazwie aplikacja_internetowa.war, nale y przej do katalogu aplikacja_internetowa
i wykona nast puj ce polecenie:
32 Core Java Servlets i JavaServer Pages
jar cvf aplikacja_internetowa.war *
Pliku WAR nie czy z poleceniem jar adna specjalna zale no . Polecenie jar jest tak
naprawd jednym z wielu narz dzi, dzi ki któremu mo na tworzy archiwa plików. Takie
samo archiwum mo na utworzy na przyk ad przy u yciu programu WinZip (albo tar
w systemie UNIX). Wystarczy w tym celu wskaza nazw pliku docelowego z rozszerzeniem
.war zamiast rozszerzenia .zip.
Oczywi cie, nic nie stoi na przeszkodzie, by w trakcie tworzenia archiwów WAR wykorzy-
sta inne opcje narz dzia jar (na przyk ad cyfrowo podpisywa klasy), tak samo jak wobec
standardowych plików JAR. Wi cej szczegó owych informacji na ten temat mo na znale
pod adresem http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/jar.html (dotyczy sys-
temu Windows) oraz http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/jar.html (dotyczy
systemów UNIX/Linux).
1.6. Tworzenie prostej aplikacji internetowej
Czas ju przej od s ów do czynów, czyli utworzy pierwsz aplikacj internetow . Jako
serwer u yty zostanie serwer Tomcat, lecz opisywane czynno ci b d przebiega podobnie
równie w przypadku wykorzystania innych serwerów. Wi cej informacji na ten temat przed-
stawiono w punkcie 1.3,  Rejestrowanie aplikacji internetowych na serwerze .
W celu utworzenia aplikacji nale y wykona nast puj ce kroki:
1. Z ftp://ftp.helion.pl/przyklady/jsp2w2.zip pobra aplikacj app-blank i zmieni jej
nazw na testApp.
2. Z tej samej witryny pobra pliki test.html, test.jsp oraz TestServlet.java.
3. Doda do tej aplikacji pliki test.html i test.jsp.
4. Umie ci plik TestServlet.java w katalogu testApp/WEB-INF/classes/coreservlets.
5. Skompilowa plik TestServlet.java.
6. Zadeklarowa w pliku web.xml klas TestServlet.class oraz adres URL,
który b dzie j wywo ywa .
7. Skopiowa aplikacj testApp do katalogu katalog_tomcat/webapps.
8. Uruchomi serwer Tomcat.
9. Wywo a aplikacj testApp, wpisuj c adres URL w postaci
http://localhost/testApp/nazwaZasobu.
Wymienione czynno ci zostan szczegó owo opisane w kolejnych sekcjach.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 33
Pobranie aplikacji app-blank i zmiana jej nazwy na testApp
Ten krok jest bardzo prosty. Wystarczy z ftp://ftp.helion.pl/przyklady/jsp2w2.zip pobra plik
app-blank.zip. Zawiera on odpowiedni struktur katalogów dla ka dej aplikacji internetowej
zgodnej ze specyfikacj J2EE. Archiwum to zawiera tak e wyj ciow wersj deskryptora wdro-
enia web.xml, w którym znajduje si odwzorowanie wy czaj ce wywo ywacz serwletu. Wi -
cej na temat odwzorowywania serwletów powiemy przy okazji odwzorowywania adresu
URL na serwlet TestServlet. Na razie wystarczy rozpakowa archiwum app-blank.zip do
wybranego katalogu i zmieni nazw katalogu na testApp. Trzeba równie pami ta , by katalog
testApp trafi do katalogu, który b dzie si znajdowa poza struktur katalogów serwera Tomcat.
Pobranie plików test.html, test.jsp oraz TestServlet.java
Podobnie jak w poprzednim kroku, wymagane pliki mo na pobra z ftp://ftp.helion.pl/
przyklady/jsp2w2.zip. Pliki mo na pobra oddzielnie jeden po drugim b d te w postaci po-
jedynczego archiwum testAppFiles.zip, a nast pnie rozpakowa je w wybranym katalogu.
Dodanie plików test.html i test.jsp do aplikacji internetowej testApp
Pliki test.html i test.jsp nale y umie ci w katalogu testApp, a nast pnie utworzy w nim
katalog someDirectory i wstawi w nim kopi plików test.html i test.jsp. Plik test.html zawiera
tre statyczn , natomiast test.jsp zawiera skrypt zwracaj cy adres URL, z którego wywo ano
stron . Na listingach 1.1 i 1.2 przedstawiono kompletne kody ród owe obydwóch plików.
Listing 1.1. test.html


Test HTML

Test HTML


Witaj.

Listing 1.2. test.jsp


Test JSP

Test JSP


U yto nast puj cego adresu URL:
<%= request.getRequestURL() %>

34 Core Java Servlets i JavaServer Pages
Umieszczenie pliku TestServlet.java w katalogu
testApp/WEB-INF/classes/coreservlets
W pliku TestServlet.java znajduje si deklaracja, wed ug której serwlet nale y do pakietu
coreservlets. Zatem plik TestServlet.java musi znale si w tym pakiecie, zanim b dzie
mo na go skompilowa . Podobnie jak plik test.jsp, plik TestServlet.class zawiera kod zwra-
caj cy adres URL, za pomoc którego nast pi o wywo anie serwletu. Pe ny kod ród owy
serwletu TestServlet.java znajduje si na listingu 1.3.
Listing 1.3. TestServlet.java
package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String docType =
" "Transitional//EN\">\n";
out.println
(docType +
"\n" +
"Test serwletu\n" +
"\n" +
"

Test serwletu

\n" +
"U yto nast puj cego adresu URL: " + request.getRequestURL() + "\n" +
"");
}
}
Kompilacja pliku TestServlet.java
Nale y pami ta , by w zmiennej rodowiskowej CLASSPATH wskaza interfejs programistyczny
(API) serwletów. Serwer Tomcat udost pnia interfejs w postaci pliku servlet-api.jar, znajdu-
j cym si w katalogu katalog_tomcat/common/lib. W systemie Windows zmienn CLASSPATH
mo na zdefiniowa w wierszu polece systemu operacyjnego, przez wykonanie nast puj cego
polecenia:
set CLASSPATH=katalog_tomcat\common\lib\servlet-api.jar
Natomiast w rodowiskach zgodnych z UNIX/Linux zmienn CLASSPATH mo na zdefiniowa
przy u yciu konsoli, przez wykonanie polecenia o nast puj cej tre ci:
CLASSPATH=katalog_tomcat/common/lib/servlet-api.jar

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 35
Po odpowiednim zdefiniowaniu zmiennej CLASSPATH mo na ju skompilowa plik TestServlet.
java. W tym celu nale y przej do katalogu testApp/WEB-INF/classes/coreservlets i wpi-
sa nast puj ce polecenie:
javac TestServlet.java
Gdy kompilacja dobiegnie ko ca, w katalogu testApp/WEB-INF/classes/coreservlets powinna
pojawi si klasa TestServlet.class.
Zadeklarowanie w pliku web.xml klasy TestServlet.class
oraz adresu URL, który j wywo uje
Nale y przej do katalogu testApp/WEB-INF i otworzy w ulubionym edytorze j zyka XML
(Extensible Markup Language) albo edytorze tekstu plik web.xml. Aby zadeklarowa klas
TestServlet.class nale y bezpo rednio za komentarzem umie ci poni sze wiersze kodu:

Test
coreservlets.TestServlet

Przedstawiony fragment zawiera deklaracj serwletu o nazwie Test, który reprezentuje kla-
s TestServlet.class. Warto zwróci uwag , e element wskazuje w pe n
nazw klasy serwletu w postaci nazwaPakietu.nazwaKlasy (bez rozszerzenia .class).
W nast pnym kroku trzeba wskaza serwerowi Tomcat adresy URL, które maj wywo ywa
serwlet Test. W tym celu w pliku web.xml nale y bezpo rednio po zamkni ciu elementu
umie ci nast puj ce wiersze kodu:

Test
/test

Powy sze wiersze wskazuj serwerowi Tomcat, e gdy klient wywo a aplikacj internetow
testApp przy u yciu adresu URL w postaci http://komputer/testApp/test, powinien zosta
wywo any wcze niej zadeklarowany serwlet Test. Zawarto pliku web.xml przedstawiono
na listingu 1.4.
Listing 1.4. web.xml


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
36 Core Java Servlets i JavaServer Pages


Test
coreservlets.TestServlet


Test
/test



NoInvoker
coreservlets.NoInvokerServlet


NoInvoker
/servlet/*



index.jsp
index.html


Wi cej informacji na temat pliku web.xml znajduje si w rozdziale 2.,  Kontrolowanie dzia ania
aplikacji przy u yciu deskryptora web.xml .
Skopiowanie aplikacji testApp do katalogu katalog_tomcat/webapps
W tym kroku nale y skopiowa ca struktur katalogów, pocz wszy od katalogu g ównego
aplikacji testApp, do katalogu automatycznego wdro enia na serwerze Tomcat katalog_tomcat/
webapps. Alternatywnie mo na spakowa aplikacj testApp do pliku WAR (przy u yciu
polecenia jar, programu WinZip albo narz dzia tar lub innego, podobnego programu),
a nast pnie skopiowa sam plik WAR do katalogu katalog_tomcat/webapps. Bez wzgl du
na to, czy do katalogu docelowego trafi aplikacja w swojej  rozdrobnionej wersji, czy jako
plik WAR, ostateczny efekt b dzie identyczny.
Uruchomienie serwera Tomcat
Serwer Tomcat mo na uruchomi w systemie Windows przez wywo anie pliku katalog_tomcat/
bin/startup.bat. W systemie UNIX/Linux nale y w tym celu wywo a plik katalog_tomcat/
bin/startup.sh. Tomcat odnajdzie nowy katalog w swym katalogu automatycznego wdra-
ania i automatycznie zarejestruje i wdro y aplikacj internetow testApp.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 37
Wywo anie aplikacji testApp przy u yciu adresu URL
w postaci http://localhost/testApp/zasób
Wywo anie adresów URL w postaci http://localhost/testApp/test.html oraz http://localhost/
testApp/someDirectory/test.html spowoduje wy wietlenie w przegl darce pliku test.html.
Wywo anie adresów http://localhost/testApp/test.jsp oraz http://localhost/testApp/some
Directory/test.jsp spowoduje wywo anie pliku test.jsp, natomiast adres URL w postaci
http://localhost/testApp/test wywo a serwlet TestServlet.class.
Wszystkie przytoczone adresy zadzia aj przy za o eniu, e zgodnie z zaleceniem przedsta-
wionym w pierwszym tomie niniejszej ksi ki w pliku konfiguracyjnym serwera Tomcat
(katalog_tomcat/conf/server.xml) wskazany zostanie port numer 80. Je eli zmiana ta nie zosta a
wprowadzona, wystarczy we wszystkich adresach URL zast pi s owo localhost s owem
localhost:8080. Na rysunkach od 1.4 do 1.8 przedstawiono zrzuty ekranów b d cych wynikiem
wywo ania poszczególnych zasobów.
Rysunek 1.4.
Wynik wywo ania
adresu
http://localhost/
testApp/test.html
Rysunek 1.5.
Wynik wywo ania
adresu
http://localhost/
testApp/test.jsp
38 Core Java Servlets i JavaServer Pages
Rysunek 1.6.
Wynik wywo ania
adresu
http://localhost/
testApp/
someDirectory/
test.html
Rysunek 1.7.
Wynik wywo ania
adresu
http://localhost/
testApp/
someDirectory/
test.jsp
Rysunek 1.8.
Wynik wywo ania
adresu
http://localhost/
testApp/test

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 39
1.7. Wspó u ytkowanie danych
przez aplikacje internetowe
Jednym z g ównych celów aplikacji internetowych jest oddzielenie danych od udost pnianych
funkcji. Ka da aplikacja internetowa utrzymuje w asn tabel sesji oraz w asny kontekst
serwletów. Ponadto ka da aplikacja u ywa w asnego modu u adowania klas. Dzi ki temu
wyeliminowano problemy zwi zane z konfliktami nazw, lecz z drugiej strony oznacza to, e
do wspó u ytkowania danych mi dzy aplikacjami nie mo na u ywa metod i pól statycznych.
Nadal jednak wspó u ytkowanie danych jest mo liwe dzi ki plikom cookies albo przy u yciu
obiektów ServletContext powi zanych z konkretnymi adresami URL. Obydwa podej cia
ca kiem dobrze sprawdzaj si wówczas, gdy ilo danych wymienianych mi dzy aplikacjami
jest niewielka, lecz gdy wolumen wymienianych danych b dzie du y i wymiana b dzie za-
chodzi stosunkowo cz sto, nale y rozwa y mo liwo po czenia tych aplikacji w jedn
wi ksz aplikacj internetow . Poni ej krótko opisano obydwie wymienione powy ej metody
wspó u ytkowania danych mi dzy aplikacjami.
Pliki cookies. Pliki cookies s utrzymywane przez przegl dark , a nie przez serwer.
Dzi ki temu cookies mog by wspó u ytkowane przez wiele aplikacji internetowych,
je li tylko ustawiono je w taki sposób, by dotyczy y dowolnej cie ki na serwerze.
Domy lnie przegl darka wysy a pliki cookies jedynie do tych adresów URL,
których prefiks jest taki sam, jak prefiks adresu URL, z którego one pochodz .
Na przyk ad je eli plik cookie zostanie przes any ze strony o adresie
http://komputer/ cie ka1/Jaki Plik.jsp, wówczas przegl darka b dzie
przesy a cookie do stron o adresach http://komputer/ cie ka1/Jaki InnyPlik.jsp
oraz http://komputer/ cie ka1/ cie ka2/DowolnyAdres, natomiast do adresu
http://komputer/ cie ka3/DowolnyAdres cookie ju nie zostanie wys ane.
Poniewa aplikacje internetowe zawsze maj unikatowe prefiksy adresu URL,
takie zachowanie przegl darek spowoduje, e plik cookie nigdy nie b dzie
u ytkowany przez dwie ró ne aplikacje.
Jednak zgodnie z informacjami zawartymi w rozdziale 8. pierwszego tomu tej
ksi ki to standardowe ustawienie mo na zmieni za pomoc metody setPath
klasy Cookie. Wystarczy wywo a t metod z argumentem "/", dzi ki czemu
przegl darka zacznie wysy a pliki cookie do wszystkich adresów URL
znajduj cych si na komputerze, z którego otrzymany zosta oryginalny plik:
Cookie c = new Cookie("nazwa", "warto ");
c.setMaxAge(& );
c.setPath("/");
response.addCookie(c);
Obiekty ServletContext powi zane z okre lonym adresem URL. W ramach serwletu
kontekst serwletu aplikacji internetowej odczytuje si przez wywo anie jego
metody getServletContext (dziedziczonej z klasy GenericServlet). Na stronie JSP
u ywa si natomiast do tego celu predefiniowanej zmiennej application. W obydwóch
przypadkach zwracan warto ci jest kontekst serwletu powi zany z serwletem
lub stron JSP, z których pochodzi o wywo anie. Dodatkowo mo na równie u y
metody getContext obiektu ServletContext, która zwróci kontekst serwletu
40 Core Java Servlets i JavaServer Pages
 niekoniecznie w asnego  powi zanego ze wskazanym adresem URL.
Podej cie to przedstawiono w poni szym fragmencie kodu:
ServletContext myContext = getServletContext();
String url = "/prefiksAplikacjiWWW";
ServletContext otherContext = myContext.getContext(url);
Object someData = otherContext.getAttribute("jaki Klucz");
Ani jedno, ani drugie przedstawione rozwi zanie nie jest idealne.
Wad plików cookie jest to, e mo na w nich przechowywa tylko ograniczon ilo danych.
Ka da warto znajduj ca si w pliku cookie jest ci giem znaków, a d ugo ka dego ci gu
znaków jest ograniczona do czterech kilobajtów. Zatem wspó u ytkowanie wi kszych ilo ci
danych wymaga u ycia bazy danych, a w plikach cookie przechowywane b d wówczas
jedynie warto ci pe ni ce rol kluczy do tej bazy, a wi c do danych rzeczywistych.
S ab stron rozwi zania bazuj cego na kontekstach serwletów jest to, e z góry trzeba
w nich zna prefiksy adresów URL u ywanych przez inne aplikacje internetowe. Zwykle
oczekuje si mo liwo ci dowolnego zmieniania prefiksu adresu aplikacji bez konieczno ci
wprowadzania jakichkolwiek zmian w kodzie aplikacji. U ywanie metody getContext t
elastyczno ogranicza. Drug wad jest to, e ze wzgl dów bezpiecze stwa na serwerach
mo na blokowa dost p do kontekstów serwletów ServletContext niektórych aplikacji inter-
netowych. Gdy co takiego nast pi, metoda getContext b dzie zwraca warto null. Na
przyk ad w niektórych wersjach serwera Tomcat mo liwo wspó u ytkowania kontekstów
jest domy lnie w czona, natomiast w innych wersjach serwera mo liwo t trzeba jawnie
udost pni . Cho by na serwerze Tomcat w wersji 5.5.7 jako cz elementu Context w pliku
katalog_tomcat/conf/context.xml mo na doda atrybut crossContext="true", który w cza
mo liwo wspó u ytkowania kontekstów i czyni j rozwi zaniem domy lnym dla wszystkich
wdro onych aplikacji. Z kolei ca kowite pomini cie atrybutu crossContext powoduje, e
Tomcat b dzie si zachowywa w sposób domy lny, to znaczy wspó u ytkowanie kontekstów
ServletContext mi dzy aplikacjami b dzie zabronione.
Obydwie metody wspó u ytkowania danych zaimplementowano w serwletach SetSharedInfo
oraz ShowSharedInfo, których kody ród owe przedstawiono odpowiednio na listingach
1.5 i 1.6. Obydwa te serwlety zosta y odwzorowane na adresy URL w deskryptorze wdro enia
widocznym na listingu 1.7. Serwlet SetSharedInfo tworzy w asne wpisy w obiekcie sesji,
a tak e kontekst serwletu. Ponadto serwlet ten tworzy dwa pliki cookie. Pierwszy z nich
zawiera cie k domy ln wskazuj c , e cookie powinno by stosowane jedynie dla adresów
URL z prefiksem identycznym jak URL, z którego nadesz o pierwotne danie. Drugi plik
cookie zawiera cie k w postaci "/", co oznacza, e cookie powinno by stosowane do
wszystkich adresów URL na komputerze. Na ko cu serwlet SetSharedInfo przekierowuje
klienta do serwletu ShowSharedInfo, który z kolei wy wietla nazwy wszystkich atrybutów sesji,
wszystkich atrybutów w bie cym kontek cie serwletu, wszystkich atrybutów w kontek cie
serwletu dotycz cego adresów URL z prefiksem /shareTest1 oraz nazwy wszystkich plików
cookie.
Listing 1.5. SetSharedInfo.java
package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 41
public class SetSharedInfo extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
session.setAttribute("sessionTest", "Sesja - wpis pierwszy");
ServletContext context = getServletContext();
context.setAttribute("servletContextTest",
"Kontekst serwletu - wpis pierwszy");
Cookie c1 = new Cookie("cookieTest1", "Cookie numer jeden");
c1.setMaxAge(3600); // jedna godzina
response.addCookie(c1); // cie ka domy lna
Cookie c2 = new Cookie("cookieTest2", "Cookie numer dwa");
c2.setMaxAge(3600); // jedna godzina
c2.setPath("/"); // bezpo rednie wyznaczenie cie ki: wszystkie adresy URL
response.addCookie(c2);
String url = request.getContextPath() +
"/showSharedInfo";
// na wypadek, gdyby ledzenie sesji bazowa o na przepisywaniu adresów URL
url = response.encodeRedirectURL(url);
response.sendRedirect(url);
}
}
Listing 1.6. ShowSharedInfo.java
package coreservlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class ShowSharedInfo extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String title = "Dane wspó u ytkowane";
out.println(" "Transitional//EN\">" +
"\n" +
"" + title + "\n" +
"\n" +
"

" + title + "

\n" +
"
    \n" +
    "
  • Sesja:");
    HttpSession session = request.getSession(true);
    Enumeration attributes = session.getAttributeNames();
    out.println(getAttributeList(attributes));
    out.println("
  • Bie cy kontekst serwletu:");
    ServletContext application = getServletContext();
    attributes = application.getAttributeNames();
    out.println(getAttributeList(attributes));
    out.println("
  • Kontekst serwletu /shareTest1:");
    42 Core Java Servlets i JavaServer Pages
    application = application.getContext("/shareTest1");
    if (application == null) {
    out.println("Wspó u ytkowanie kontekstów wy czone");
    } else {
    attributes = application.getAttributeNames();
    out.println(getAttributeList(attributes));
    }
    out.println("
  • Pliki cookies:
      ");
      Cookie[] cookies = request.getCookies();
      if ((cookies == null) || (cookies.length == 0)) {
      out.println("
    • Nie znaleziono plików cookie.");
      } else {
      Cookie cookie;
      for(int i=0; i cookie = cookies[i];
      out.println("
    • " + cookie.getName());
      }
      }
      out.println("
    \n" +
    "
\n" +
"");
}
private String getAttributeList(Enumeration attributes) {
StringBuffer list = new StringBuffer("
    \n");
    if (!attributes.hasMoreElements()) {
    list.append("
  • Nie znaleziono atrybutów.");
    } else {
    while(attributes.hasMoreElements()) {
    list.append("
  • ");
    list.append(attributes.nextElement());
    list.append("\n");
    }
    }
    list.append("
");
return(list.toString());
}
}
Listing 1.7. web.xml


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">


setSharedInfoServlet

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 43
coreservlets.SetSharedInfo


setSharedInfoServlet
/setSharedInfo


showSharedInfoServlet
coreservlets.ShowSharedInfo


showSharedInfoServlet
/showSharedInfo



NoInvoker
coreservlets.NoInvokerServlet


NoInvoker
/servlet/*



index.jsp
index.html


W celu sprawdzenia dzia ania przedstawionej aplikacji nale y uruchomi tylko serwlet
SetSharedInfo z aplikacji shareTest1, a po nim wywo a serwlet ShowSharedInfo aplikacji
shareTest1 oraz shareTest2. Nie nale y natomiast wywo ywa serwletu ShowSharedInfo
z aplikacji shareTest2, poniewa nie zilustruje on mechanizmu wspó u ytkowania danych
przez te dwie aplikacje.
Na rysunku 1.9 przedstawiono wynik wywo ania przez u ytkownika serwletów SetSharedInfo
i ShowSharedInfo z aplikacji internetowej, której przypisano prefiks adresu URL /shareTest1.
Dla serwletu ShowSharedInfo dost pne s :
W asny atrybut sesji.
Atrybuty znajduj ce si w domy lnym kontek cie serwletu  w asny
(utworzony jawnie przez serwlet ShowSharedInfo) oraz standardowy
(utworzony automatycznie przez serwer).
Atrybuty w asny i standardowy, znajduj ce si w kontek cie serwletu odczytanym
przez metod getContext("/shareTest1"). W tym przypadku kontekst serwletu jest
to samy z domy lnym kontekstem serwletu.
Dwa jawnie utworzone pliki cookie oraz cookie utworzone przez system i u ywane
przez mechanizm ledzenia sesji.
44 Core Java Servlets i JavaServer Pages
Rysunek 1.9.
Wynik wywo ania
serwletów
SetSharedInfo
i ShowSharedInfo
z tej samej
aplikacji
internetowej
Na rysunku 1.10 z kolei przedstawiono wynik pó niejszego wywo ania przez u ytkownika
identycznego serwletu ShowSharedInfo zainstalowanego w aplikacji internetowej, której
przypisano prefiks adresu URL /shareTest2. Dla serwletu dost pne s :
Standardowe atrybuty zawarte w domy lnym kontek cie serwletu.
Atrybuty w asny i standardowy znajduj ce si w kontek cie serwletu odczytanym
przez metod getContext("/shareTest1"); w tym przypadku jest to kontekst inny
ni domy lny kontekst serwletu.
Dwa pliki cookie: jeden utworzony jawnie, którego cie k jest "/",
oraz drugi, utworzony przez system, u ywany przez mechanizm ledzenia sesji
(w nim równie u ywana jest w asna cie ka "/").
Z kolei nast puj ce elementy s dla serwletu niewidoczne:
Atrybuty znajduj ce si w obiekcie sesji.
W asne atrybuty znajduj ce si w domy lnym kontek cie serwletu.
Jawnie utworzone pliki cookie, w których u yto cie ki domy lnej.

Rozdzia 1. U ywanie i wdra anie aplikacji internetowych 45
Rysunek 1.10.
Wynik wywo ania
serwletu
SetSharedInfo
w jednej aplikacji
internetowej
oraz serwletu
ShowSharedInfo
z drugiej aplikacji
internetowej


Wyszukiwarka

Podobne podstrony:
Zagadnienia maturalne z informatyki Wydanie II Tom II zamat2
Alchemia tom II Rozdział 1
Tom II rozdziały 46 52
Specyfikacja techniczna tom II, zal nr 7
Achiles Fould, Wizerunki wsławionychŻydów XIX wieku, Warszawa 1869, tom II
Tom II rozdziały 36 40
Anatomia człowieka Tom II Janina Sokołowska Pituchowa
Tom II rozdziały 11 15

więcej podobnych podstron