Core Java Servlets i JavaServer Pages Tom II Wydanie II

background image

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¹ popularnoœæ?

Przyczyn jest kilka: mo¿liwoœæ przenoszenia kodu miêdzy programami, wydajnoœæ i to,

co programiœci 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 œwietn¹ dokumentacjê.

Ponadto liczne publikacje oraz pomocna spo³ecznoœæ sprawiaj¹, ¿e Java zajmuje

poczesne miejsce wœró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¿liwoœci pakietu Swing

• Wykorzystanie biblioteki AWT

• Bezpieczeñstwo w aplikacjach

• Zastosowanie podpisu cyfrowego

• Sposoby wykorzystania obiektów rozproszonych (RMI)

Wykorzystaj zaawansowane mo¿liwoœci jêzyka Java w swoich projektach!

background image

Spis treci

Wprowadzenie ................................................................................................................................................ 11

Podzikowania ............................................................................................................................................... 15

O autorach ...................................................................................................................................................... 16

Rozdzia 1. Uywanie i wdraanie aplikacji internetowych ......................................................................... 17

1.1. Cele aplikacji internetowych .................................................................................... 18

Organizacja ....................................................................................................... 18
Przenono ..................................................................................................... 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 wdraania aplikacji internetowych .................................................. 28

Kopiowanie struktury do skrótu lub dowizania symbolicznego .............................. 29
Wykorzystanie funkcji wdraania udostpnianych przez IDE ................................... 30
Uywanie narzdzi ant, maven i im podobnych ..................................................... 30
Uywanie IDE wraz z narzdziem 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 wywouje ........................................................................................... 35

Skopiowanie aplikacji testApp do katalogu katalog_tomcat/webapps .................... 36

background image

4

Core Java Servlets i JavaServer Pages

Uruchomienie serwera Tomcat ............................................................................ 36
Wywoanie aplikacji testApp przy uyciu adresu URL

w postaci http://localhost/testApp/zasób ...................................................... 37

1.7. Wspóuytkowanie danych przez aplikacje internetowe ................................................ 39

Rozdzia 2. Kontrolowanie dziaania aplikacji przy uyciu deskryptora web.xml ....................................47

2.1. Przeznaczenie deskryptora wdroenia ........................................................................ 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 wasnych adresów URL .............................................................. 55

Przypisywanie nazw ............................................................................................ 56
Definiowanie wasnych adresów URL ................................................................... 57
Nazewnictwo stron JSP ...................................................................................... 62

2.5. Wyczanie serwletu wywoujcego ............................................................................ 64

Zmiana odwzorowania wzorca adresu URL /servlet/ ............................................. 65
Globalne wyczanie serwletu wywoujcego na serwerze Tomcat .......................... 66

2.6. Inicjalizowanie i wstpne adowanie serwletów i stron JSP .......................................... 68

Przypisywanie serwletom parametrów inicjalizacyjnych .......................................... 68
Przypisywanie parametrów inicjalizacyjnych JSP .................................................... 71
Parametry inicjalizacyjne na poziomie caej 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 obsugujcych bdy ..................................................................... 81

Element error-code ............................................................................................ 82
Element exception-type ...................................................................................... 84

2.10. Definiowanie zabezpiecze ...................................................................................... 86

Definiowanie metody uwierzytelniania ................................................................. 86
Ograniczanie dostpu 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 waciwoci stron JSP ................................................................. 95

2.15. Kodowanie znaków ............................................................................................... 100
2.16. Tworzenie procesów nasuchujcych zdarze aplikacji .............................................. 100
2.17. Tworzenie rozwiza przeznaczonych dla rodowisk klastrowych ............................... 101
2.18. Elementy J2EE ..................................................................................................... 104

Rozdzia 3. Zabezpieczenia deklaratywne ................................................................................................. 109

3.1. Uwierzytelnianie przy uyciu formularza .................................................................... 111

Definiowanie nazw uytkowników, hase i ról ...................................................... 113
Wczanie na serwerze uwierzytelniania przy uyciu formularzy

i wskazywanie lokalizacji strony logowania oraz strony obsugi bdu logowania .... 114

Tworzenie strony logowania .............................................................................. 115
Tworzenie strony z informacj o bdzie logowania ............................................. 118
Wskazywanie adresów URL, które maj by zabezpieczone hasem ..................... 118
Zdefiniowanie listy wszystkich abstrakcyjnych ról ............................................... 122

background image

Spis treci

5

Wskazywanie adresów URL dostpnych wycznie

za porednictwem protokou SSL .................................................................. 122

Wyczanie serwletu wywoujcego .................................................................... 124

3.2. Przykad. Uwierzytelnianie przy uyciu formularzy ..................................................... 125

Strona gówna ................................................................................................. 125
Deskryptor wdroenia ....................................................................................... 126
Plik z hasami .................................................................................................. 129
Strony logowania i obsugi bdu 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 uytkowników, hase i ról ...................................................... 146
Wczanie na serwerze uwierzytelniania metod BASIC

i definiowanie nazwy obszaru ....................................................................... 146

Wskazywanie adresów URL, które maj by zabezpieczone hasem ..................... 146
Zdefiniowanie listy wszystkich abstrakcyjnych ról ............................................... 147
Wskazywanie adresów URL dostpnych wycznie

za porednictwem protokou SSL .................................................................. 147

3.4. Przykad. Uwierzytelnianie metod BASIC ................................................................. 147

Strona gówna ................................................................................................. 148
Deskryptor wdroenia ....................................................................................... 149
Plik hase ........................................................................................................ 151
Plan finansowy ................................................................................................ 151
Biznesplan ...................................................................................................... 152
Serwlet NoInvokerServlet ................................................................................. 154

3.5. Konfigurowanie obsugi protokou 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 uyciu protokou SSL ..... 170

Rozdzia 4. Zabezpieczenia programistyczne ........................................................................................... 173

4.1. czenie zabezpiecze programistycznych i zabezpiecze

zarzdzanych przez kontener ..................................................................... 175

Odwoania do ról ............................................................................................. 176

4.2. Przykad. czenie zabezpiecze programistycznych i zabezpiecze

zarzdzanych przez kontener ..................................................................... 177

4.3. Zastosowanie wycznie zabezpiecze programistycznych ......................................... 180
4.4. Przykad. Zastosowanie wycznie zabezpiecze programistycznych ........................... 184
4.5. Zabezpieczenia programistyczne i protokó SSL ......................................................... 187

Ustalenie, czy uywany jest protokó SSL ........................................................... 188
Przekierowywanie wywoa, które nie dotycz protokou SSL ............................... 188
Odczytanie liczby bitów w kluczu ....................................................................... 189
Sprawdzenie algorytmu szyfrowania .................................................................. 189
Dostp do certyfikatu X.509 klienta .................................................................. 189

4.6. Przykad. Zabezpieczenia programistyczne i protokó SSL .......................................... 190

background image

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 implementujcej interfejs Filter ................................................. 197
Implementacja filtra w metodzie doFilter ............................................................ 198
Wywoanie metody doFilter obiektu FilterChain ................................................... 198
Rejestrowanie filtra dla serwletów lub stron JSP ................................................. 198
Wyczenie serwletu wywoujcego .................................................................... 200

5.2. Przykad. Filtr raportujcy ........................................................................................ 201
5.3. Dostp do kontekstu serwletu z poziomu filtra ......................................................... 207
5.4. Przykad. Filtr zapisujcy do dziennika ..................................................................... 208
5.5. Uywanie parametrów inicjalizujcych dla filtrów ...................................................... 210
5.6. Przykad. Filtr czasu udostpnienia .......................................................................... 212
5.7. Blokowanie odpowiedzi .......................................................................................... 215
5.8. Przykad. Filtr blokujcy stron ................................................................................ 215
5.9. Modyfikowanie odpowiedzi ..................................................................................... 221

Obiekt przechowujcy odpowied, gotowy do wielokrotnego wykorzystania ............ 222

5.10. Przykad. Filtr zastpujcy ..................................................................................... 224

Ogólny filtr modyfikujcy ................................................................................... 224
Konkretny filtr modyfikujcy .............................................................................. 225

5.11. Przykad. Filtr kompresujcy .................................................................................. 230
5.12. Konfigurowanie wspópracy filtra z obiektem RequestDispatcher ............................. 235
5.13. Przykad. atanie potencjalnej dziury w zabezpieczeniach ........................................ 237
5.14. Pena definicja deskryptora wdroenia ................................................................... 243

Rozdzia 6. Model zdarze aplikacji ........................................................................................................... 249

6.1. Monitorowanie zdarze polegajcych na utworzeniu i zniszczeniu kontekstu serwletu ..... 252
6.2. Przykad. Inicjalizowanie wspóuytkowanych danych ................................................. 253
6.3. Wykrywanie zmian wartoci atrybutów kontekstu serwletu ......................................... 258
6.4. Monitorowanie zmian we wspóuytkowanych danych ................................................ 259
6.5. Umieszczanie obiektów nasuchujcych w bibliotekach znaczników ............................ 267
6.6. Przykad. Pakiet zawierajcy obiekty ledzce nazw firmy ........................................ 269
6.7. Wykrywanie zdarze tworzenia i niszczenia sesji ....................................................... 275
6.8. Przykad. Obiekt nasuchujcy, który zlicza sesje ...................................................... 276

Wyczanie obsugi plików cookie ...................................................................... 282

6.9. Wykrywanie zmian w atrybutach sesji ...................................................................... 283
6.10. Przykad. Monitorowanie zamówie na jachty ......................................................... 283
6.11. Wykrywanie inicjalizacji i zniszczenia dania serwletu ............................................ 290
6.12. Przykad. Obliczanie obcienia serwera daniami ................................................. 291
6.13. Wykrywanie zmian atrybutów w daniach serwletów .............................................. 296
6.14. Przykad. Zatrzymywanie obiektu zbierania statystyk da ...................................... 297
6.15. Wykorzystanie wielu obiektów nasuchujcych wspópracujcych ze sob ................. 299

ledzenie zamówie na towary z oferty dnia ....................................................... 300
Resetowanie licznika zamówie na oferty dnia ................................................... 306

6.16. Pena definicja deskryptora wdroenia ................................................................... 311

Rozdzia 7. Podstawowe informacje na temat bibliotek znaczników ....................................................... 317

7.1. Komponenty biblioteki znaczników .......................................................................... 318

Klasa obsugi znacznika ................................................................................... 319
Plik deskryptora biblioteki znaczników ............................................................... 320
Plik JSP .......................................................................................................... 321

background image

Spis treci

7

7.2. Przykad. Prosty znacznik liczby pierwszej ................................................................. 322
7.3. Przypisywanie znacznikom atrybutów ....................................................................... 326

Atrybuty znacznika a klasa obsugi znacznika ..................................................... 326
Atrybuty znacznika a deskryptor biblioteki znaczników ......................................... 327
Atrybuty znacznika a plik JSP ............................................................................ 328

7.4. Przykad. Znacznik liczby pierwszej o zmiennej dugoci ............................................ 328
7.5. Zamieszczanie treci znacznika w danych zwracanych przez znacznik ......................... 330

Tre znacznika a klasa obsugi znacznika ......................................................... 330
Tre znacznika a deskryptor biblioteki znaczników ............................................ 331
Tre znacznika a plik JSP ................................................................................ 331

7.6. Przykad. Znacznik nagówka ................................................................................... 332
7.7. Przykad. Znacznik debugowania ............................................................................. 335
7.8. Tworzenie plików znaczników .................................................................................. 337
7.9. Przykad. Prosty znacznik liczby pierwszej z uyciem pliku znacznika ........................... 339

7.10. Przykad. Znacznik liczby pierwszej o zmiennej dugoci z uyciem pliku znacznika ...... 340
7.11. Przykad. Znacznik nagówka z uyciem pliku znacznika ............................................ 341

Rozdzia 8. Biblioteki znaczników. Funkcje zaawansowane .................................................................... 345

8.1. Operacje na treci znacznika .................................................................................. 346
8.2. Przykad. Znacznik filtrujcy kod HTML ..................................................................... 347
8.3. Przypisywanie atrybutom znaczników wartoci dynamicznych ..................................... 350

Dynamiczne wartoci atrybutów a klasa obsugi znacznika .................................. 351
Dynamiczne wartoci atrybutów a deskryptor biblioteki znaczników ...................... 351
Dynamiczne wartoci atrybutów a plik JSP ......................................................... 351

8.4. Przykad. Prosty znacznik wykonujcy ptl .............................................................. 352
8.5. Przypisywanie atrybutom znaczników wartoci w postaci zoonych obiektów .............. 356

Dynamiczne, zoone wartoci atrybutów a klasa obsugi znacznika ..................... 356
Dynamiczne, zoone wartoci atrybutów a deskryptor biblioteki znaczników ......... 356
Dynamiczne, zoone wartoci atrybutów a plik JSP ............................................ 357

8.6. Przykad. Znacznik formatujcy tabele ..................................................................... 357
8.7. Tworzenie znaczników wykonujcych ptle ............................................................... 362
8.8. Przykad. Znacznik forEach ..................................................................................... 363
8.9. Tworzenie funkcji jzyka wyrae ............................................................................. 367

8.10. Przykad. Ulepszony znacznik debugowania ............................................................. 369
8.11. Obsuga zagniedonych znaczników niestandardowych ........................................... 372
8.12. Przykad. 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

background image

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 wasnych aplikacji Struts ................................................................... 405
Dodawanie Struts do ju istniejcej 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

Dziaanie obiektów Action ................................................................................. 415
Przykad. Odwzorowanie jednego wyniku ............................................................ 418
Przykad. Odwzorowanie kilku wyników ............................................................... 424
czenie wspóuytkowanych odwzorowa warunków .......................................... 432

10.5. Obsuga parametrów da w komponentach bean formularzy .................................. 434

Proces przetwarzania na platformie Struts z uwzgldnieniem komponentów bean ..... 434
Sze podstawowych kroków w pracy ze Struts .................................................. 436
Dziaanie komponentów bean formularzy ........................................................... 438
Wywietlanie waciwoci komponentu bean ...................................................... 440
Przykad. Komponenty bean formularza i danych wynikowych ............................... 442

10.6. Wstpne wypenianie formularzy danymi i ich ponowne wywietlanie ......................... 453

Proces przetwarzania na platformie Struts ......................................................... 454
Sze podstawowych kroków w pracy ze Struts .................................................. 455
Wykorzystanie znaczników html: platformy Struts ............................................... 458
Wypenianie formularzy danymi pocztkowymi .................................................... 459
Przykad. Wypenianie formularzy danymi pocztkowymi ...................................... 460
Strategie tworzenia adresów URL dla obiektów Action ........................................ 469
Ponowne wywietlanie formularzy ..................................................................... 472
Przykad. Ponowne wywietlanie formularza ....................................................... 475

Rozdzia 11. Platforma Struts. Funkcje dodatkowe ................................................................................... 485

11.1. Wykorzystanie plików waciwoci .......................................................................... 486

Zalety plików waciwoci ................................................................................. 486
Dziaanie platformy Struts z uwzgldnieniem plików waciwoci .......................... 486
Sposób uywania plików waciwoci ................................................................ 487
Przykad. Proste komunikaty ............................................................................. 491
Klucze dynamiczne .......................................................................................... 496
Komunikaty parametryzowane .......................................................................... 497

11.2. Umidzynaradawianie aplikacji ............................................................................... 498

adowanie jzykowych wersji pliku waciwoci .................................................. 498
Definiowanie ustawie jzykowych w przegldarkach .......................................... 498
Przykad. Polska, hiszpaska i francuska wersja jzykowa ................................... 499
Wyniki ............................................................................................................ 500

background image

Spis treci

9

11.3. Definiowanie ukadu stron przy uyciu moduu Tiles ............................................... 501

Powody, dla których warto uywa Tiles ............................................................. 501
Wymagania wstpne moduu Tiles .................................................................... 502
Cztery kroki w pracy z Tiles ............................................................................... 503
Prosta aplikacja wykorzystujca Tiles ................................................................ 506
Obsuga wzgldnych adresów URL .................................................................... 510
Przykad. Aplikacja e-boats ............................................................................... 511

11.4. Wykorzystanie Tiles Definitions .............................................................................. 519

Powody, dla których warto uywa Tiles Definitions ............................................ 521
Pi kroków w pracy z Tiles Definitions .............................................................. 522
Przykad. Aplikacja e-boats wykorzystujca modu Tiles Definitions ...................... 525

Rozdzia 12. Platforma Struts. Weryfikacja poprawnoci danych wpisanych przez uytkownika ...... 529

12.1. Weryfikacja poprawnoci danych w klasie Action ..................................................... 530

Proces przetwarzania Struts ............................................................................. 531
Przeprowadzenie weryfikacji danych w klasie Action ............................................ 531
Przykad. Wybór kolorów i rozmiarów czcionek wykorzystywanych w yciorysie ....... 534

12.2. Weryfikacja poprawnoci danych w komponencie bean formularza ............................ 541

Proces przetwarzania Struts ............................................................................. 542
Przeprowadzenie weryfikacji danych w komponencie ActionForm .......................... 542
Przykad. Wybór kolorów i rozmiarów czcionek

wykorzystywanych w yciorysie (wersja druga) ................................................ 546

Parametryzowane komunikaty o bdach ........................................................... 553
Przykad. Weryfikacja poprawnoci danych

z wykorzystaniem parametryzowanych komunikatów ....................................... 553

12.3. Wykorzystanie platformy automatycznej weryfikacji poprawnoci danych .................... 556

Weryfikacja rczna a weryfikacja automatyczna .................................................. 556
Weryfikacja na kliencie a weryfikacja na serwerze .............................................. 557
Proces przetwarzania Struts ............................................................................. 558
Konfiguracja mechanizmu automatycznej weryfikacji danych ................................ 559
Przykad. Automatyczna weryfikacja poprawnoci danych .................................... 565

Dodatek A Tworzenie aplikacji przy uyciu Apache Ant ........................................................................... 575

A.1. Najwaniejsze 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. Przegld najczciej uywanych zada Ant ............................................................... 582

Zadanie echo .................................................................................................. 582
Zadanie tstamp ............................................................................................... 583
Zadanie mkdir ................................................................................................. 584
Zadanie delete ................................................................................................ 584
Zadanie copy .................................................................................................. 586
Zadanie javac .................................................................................................. 588

A.5. Przykad. Prosty projekt Ant .................................................................................... 591
A.6. Tworzenie aplikacji internetowej przy uyciu Ant ...................................................... 596

Zalenoci midzy celami Ant ........................................................................... 597

background image

10

Core Java Servlets i JavaServer Pages

A.7. Przykad. Wykonanie aplikacji internetowej ............................................................... 598

Cel prepare ..................................................................................................... 600
Cel copy ......................................................................................................... 601
Cel build ......................................................................................................... 602

A.8. Tworzenie pliku WAR przy uyciu Ant ........................................................................ 603

Zadanie jar ..................................................................................................... 603
Zadanie manifest ............................................................................................ 605

A.9. Przykad. Tworzenie pliku WAR aplikacji internetowej ................................................. 606

Cel war ........................................................................................................... 607

Skorowidz ..................................................................................................................................................... 611

background image

1

Uywanie i wdraanie

aplikacji internetowych

W tym rozdziale:

Q

Cele aplikacji internetowych

Q

Struktura aplikacji internetowych

Q

Rejestrowanie aplikacji internetowych

Q

Strategie rozwoju i wdraania aplikacji internetowych

Q

Pliki WAR

Q

Wspóuytkowanie danych przez aplikacje internetowe

W ramach aplikacji internetowych mona 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 treci przeznaczonych dla internetu. Z kolekcji tych mona
korzysta na dowolnym serwerze zgodnym ze specyfikacj serwletów. Prawidowo zaprojek-
towane aplikacje internetowe mona przenosi z jednego serwera na inny albo umieszcza
w innej lokalizacji na tym samym serwerze bez koniecznoci wprowadzania zmian do ser-
wletów, stron JSP czy plików HTML wchodzcych w skad aplikacji.

W ten sposób nawet zoone aplikacje mona przenosi bez wikszego wysiku, uatwiajc ich
wielokrotne wykorzystywanie. Ponadto dziki temu, e kada aplikacja internetowa posiada
wasn struktur katalogów, sesje, kontekst

ServletContext

i modu adowania klas, uywanie

aplikacji internetowej upraszcza nawet pocztkowe etapy rozwoju, poniewa znacznie
mniej uwagi trzeba powica na koordynacj poszczególnych elementów caego opraco-
wanego rozwizania.

background image

18

Core Java Servlets i JavaServer Pages

1.1. Cele aplikacji internetowych

Aplikacje internetowe maj trzy gówne zalety — uatwiaj odpowiednie zorganizowanie
zasobów, wdroona aplikacja charakteryzuje si przenonoci, a ponadto atwiej jest unikn
konfliktów midzy rónymi aplikacjami internetowymi. Kada z tych zalet zostanie omówiona
nieco szerzej.

Organizacja

Pierwsza zaleta aplikacji internetowych wypywa z faktu, e wszystko ma w nich swoje miejsce
— dla kadego rodzaju zawartoci 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 bezporednio dostpne
dla klientów (na przykad przegldarek internetowych) umieszczane s w gównym katalogu
aplikacji internetowej lub dowolnym jego podkatalogu z wyjtkiem WEB-INF.

Czsto zdarza si, e programista koczy prac nad jednym projektem i przechodzi do innego
zespou projektowego. Dziki standardowej organizacji zasobów aplikacji nie trzeba na nowo
poznawa struktury aplikacji za kadym razem, gdy rozpoczyna si prac nad nowym pro-
jektem. Nowy programista rozpoczynajcy prac nad aplikacj nie musi równie traci czasu
na rozpoznanie sposobu organizowania poszczególnych rodzajów plików.

Przenono

Poniewa specyfikacja serwletów przewiduje okrelon organizacj plików, na kadym serwe-
rze zgodnym z t specyfikacj mona waciwie od razu wdraa i uruchamia aplikacj.
Dziki temu istnieje dua swoboda w wyborze dostawcy docelowego serwera WWW. Jeli
tylko wybrany serwer jest zgodny ze specyfikacj, kad aplikacj mona — w wikszoci
przypadków bez adnych zmian — wdroy i uruchomi na serwerze pochodzcym od innego
producenta. Mona na przykad utworzy aplikacj na darmowym serwerze WWW, a nastp-
nie jej wersj przedprodukcyjn uruchomi ju na bardziej stabilnym serwerze, dla którego
producent wiadczy odpowiednie wsparcie techniczne.

Separacja

Poszczególne aplikacje internetowe wdroone na tym serwerze nie wchodz ze sob w konflikt.
Kada aplikacja ma wasny adres URL, za pomoc którego mona do niej uzyska dostp,
wasny obiekt

ServletContext

i tak dalej. Dwie aplikacje wdroone na tym samym serwerze

dziaaj tak, jakby byy uruchamiane na dwóch oddzielnych serwerach, adna z tych aplikacji
nie musi równie mie dostpu do drugiej.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

19

Fakt ten jeszcze bardziej upraszcza proces tworzenia i wdraania 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 dziaajcymi na tym samym serwerze.
Obecnie istnieje kilka sposobów, dziki którym aplikacje mog ze sob wspópracowa
— zostan one opisane w dalszej czci rozdziau. Jednak w znakomitej wikszoci przy-
padków aplikacje wdraa si niezalenie od siebie.

1.2. Struktura aplikacji internetowych

Jak ju wczeniej wspomniano, aplikacja internetowa ma standardowy format i jest przenona
do wszystkich serwerów WWW lub serwerów aplikacji zgodnych ze specyfikacj. Gówny
katalog aplikacji to zwyky katalog o dowolnej nazwie. Wewntrz tego katalogu znajduj
si lokalizacje przeznaczone dla poszczególnych elementów. W tym punkcie opisane zostan
rodzaje elementów, z jakich moe skada 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 przykadowej aplikacji internetowej.
Aby wykona kolejne kroki procesu tworzenia wasnej aplikacji internetowej, naley 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 naley 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 udostp-
niaj klientom plików znajdujcych si w katalogach WEB-INF i META-INF. Gdy aplikacja
internetowa zostanie ju zarejestrowana (wicej na ten temat w punkcie 1.3), naley wskaza
serwerowi prefiks URL wskazujcy aplikacj oraz zdefiniowa lokalizacj, w której znaj-
duje si katalog aplikacji internetowej. Zazwyczaj — cho nie jest to obowizkowe — jako

background image

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 dostpne za porednictwem adresów URL w postaci http://

´komputer/prefiksAplikacji/nazwapliku.jsp (jeeli 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 zaley, czy plik domylny, taki jak index.jsp, bdzie dostpny po wpi-
saniu adresu URL wskazujcego jedynie katalog (na przykad http://komputer/prefiksAplikacji/)
bez zapisania odpowiedniego ustawienia w pliku konfiguracyjnym WEB-INF/web.xml. Jeeli
index.jsp ma by domylnym plikiem aplikacji, zalecane jest dodanie w pliku web.xml tej
aplikacji odpowiedniego elementu

welcome-file-list

. Na przykad poniszy fragment pliku

web.xml wskazuje, e jeeli adres URL zawiera nazw katalogu, a nie zawiera nazwy pliku,
wówczas serwer powinien w pierwszej kolejnoci zwróci plik index.jsp, a w drugiej kolej-
noci plik index.html. Jeeli na serwerze nie ma adnego z tych dwóch plików, odpowied
bdzie zalee od serwera (na przykad wywietlona zostanie zawarto katalogu).

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

Wicej informacji na temat sposobu uywania pliku web.xml znajduje si w rozdziale 2.,
„Kontrolowanie dziaania aplikacji przy uyciu deskryptora web.xml”.

Dokumenty HTML, obrazki i inne standardowe elementy aplikacji internetowej

Modu obsugi serwletów i stron JSP stosuje identyczne reguy 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 dokadnie w tych samych lokalizacjach i udostpniane
za porednictwem 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 odpowiadajcej nazwie pakietu.

Aby uzyska dostp do jednego z serwletów trzeba wskaza dla niego odpowiedni adres URL.
W tym celu w deskryptorze wdroenia web.xml, znajdujcym si w katalogu WEB-INF,
trzeba zdefiniowa element

servlet-mapping

. Wicej informacji na ten temat znajduje si

w punkcie 1.3, „Rejestrowanie aplikacji internetowych na serwerze”.

Dostp do serwletów mona take uzyskiwa w inny sposób, który nie wymaga definiowania
odpowiedniego adresu URL. Do tego celu mona uy adresu o postaci http://komputer/prefiks

´Aplikacji/servlet/nazwaPakietu.NazwaSerwletu. Uywanie adresu o takiej postaci przy-
daje si w trakcie testowania moliwoci aplikacji, natomiast nie zaleca si jego uywania
w aplikacjach produkcyjnych. Powodów jest kilka. Po pierwsze, jeeli dla tego samego
serwletu zostanie równie zdefiniowany element

servlet-mapping

, bdzie mona go wywo-

ywa na dwa róne sposoby, a to z kolei szybko zacznie utrudnia utrzymywanie aplikacji.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

21

Po drugie, poniewa deklaratywne zabezpieczenia aplikacji zale od adresu URL, przy uyciu
którego zasób jest udostpniany, moe w ten sposób powsta luka w zabezpieczeniach. Po
trzecie, uytkownik jest zmuszony wpisa adres URL, w którym znajduje si nazwa serwletu
ze wszystkimi jego kwalifikatorami, a takie adresy wygldaj mao elegancko i s trudne do
zapamitania. Zatem w kategorii uytecznoci aplikacji internetowej taki sposób wywoywania
serwletów zyskaby bardzo niskie noty. Po czwarte, jeeli kiedykolwiek zajdzie potrzeba, by
zmieni nazw klasy albo umieci klasy w nowym pakiecie, zmieni trzeba bdzie równie
sam adres URL. To z kolei pocignie za sob wymóg zmiany wszystkich odwoa znajdu-
jcych si w aplikacji, w których uywano dotychczasowego adresu URL. Oprócz tego, e
sama ta czynno bdzie do uciliwa, to jej wynik spowoduje zamieszanie równie wród
samych uytkowników, którzy przecie mogli zapisa adres wród swoich ulubionych
zakadek, a po zmianie adresu serwletu adres ten przestanie dziaa i uyteczno aplikacji
znowu ucierpi.

Zalecamy jawne blokowanie dostpu do serwletów wchodzcych w skad aplikacji internetowej
bez odpowiednio odwzorowanego adresu URL. Odwzorowanie takie mona zdefiniowa za
pomoc elementu

servlet-mapping

pliku web.xml. Przykadowe odwzorowanie znajduje

si w pliku web.xml aplikacji app-blank, któr mona pobra z witryny

ftp://ftp.helion.pl/

´przyklady/jsp2w2.zip.

Serwlety, komponenty JavaBeans i klasy pomocnicze znajdujce si w pakietach JAR

Jeeli serwlety lub inne pliki z rozszerzeniem .class wchodz w skad pakietów JAR, wów-
czas pliki JAR powinny si znajdowa w katalogu WEB-INF/lib. Jeeli klasy znajduj si
w pakietach, wówczas wewntrz pliku JAR klasy te powinny znajdowa si w katalogu
o nazwie odpowiadajcej nazwie ich pakietu. Wikszo serwerów umoliwia wspóuyt-
kowanie plików JAR przez róne aplikacje internetowe. Funkcja ta nie jest jednak standardem,
a konkretny sposób jej dziaania zaley od rodzaju serwera. Na serwerze Tomcat wspóuyt-
kowane pliki JAR umieszcza si w katalogu katalog_tomcat/shared/lib.

Deskryptor wdroenia

Deskryptor wdroenia, czyli plik web.xml, powinien znajdowa si w podkatalogu WEB-INF
katalogu gównego aplikacji internetowej. Szczegóowe informacje na temat sposobu uywania
pliku web.xml znajduj si w rozdziale 2., „Kontrolowanie dziaania aplikacji przy uyciu
pliku web.xml”. Warto zwróci uwag, e niektóre serwery mog obsugiwa globalny plik
web.xml, dotyczcy wszystkich aplikacji internetowych. Na przykad 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 wycznie plik web.xml definiowany dla kadej aplikacji oddzielnie i umieszczany w ka-
talogu WEB-INF aplikacji internetowej.

Deskryptory bibliotek znaczników

Pliki bdce 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

background image

22

Core Java Servlets i JavaServer Pages

w jednym katalogu (na przykad o nazwie tlds) upraszcza proces zarzdzania nimi. Strony
JSP uzyskuj dostp do plików TLD znajdujcych si w WEB-INF za pomoc dyrektywy

taglib

o nastpujcej postaci:

<%@ taglib uri="/WEB-INF/tlds/mójPlikTaglib.tld" … %>

Poniewa nie mamy do czynienia z klientem (takim jak choby przegldarka internetowa),
lecz z serwerem, który wykorzystuje plik TLD, blokada dostpu do zawartoci znajdujcej
si w katalogu WEB-INF w tym przypadku nie obowizuje.

Gdy plik z rozszerzeniem .tld jest umieszczany wewntrz 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 wic nie zawieraj katalogu WEB-INF. Wicej 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 dostpne dla stron JSP
nawet wówczas, gdy znajduj si w katalogu WEB-INF. Pliki znaczników równie deklaruje
si na stronie JSP przy uyciu dyrektywy

taglib

. Jednak zamiast

uri

naley w ich przypadku

zdefiniowa atrybut

tagdir

. Jeeli na przykad plik mójPlikZnaczników.tag umieszczony

zostanie w katalogu WEB-INF/tags aplikacji internetowej, dyrektywa

taglib

strony JSP

powinna mie nastpujc 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 mona take docza do plików JAR. Sam plik JAR powinien zosta
umieszczony w katalogu WEB-INF/lib, zgodnie z tym, co wspomniano ju wczeniej. Jednak
wewntrz 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 cieki dostpu w pliku z rozszerzeniem .tld. Warto zauway, e
plik z rozszerzeniem .tld moe zawiera równie deklaracje wasnych znaczników innych
typów. Wicej 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 (wicej na ten temat w punkcie 1.5), plik MANIFEST.MF zostaje
umieszczony w podkatalogu META-INF. Zazwyczaj narzdzie 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.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

23

1.3. Rejestrowanie aplikacji internetowych

na serwerze

Jak wspominano ju wczeniej, aplikacje internetowe s przenone. Bez wzgldu na to, jaki
serwer jest uywany, pliki aplikacji s przechowywane w takiej samej strukturze katalogów, a
dostp do nich uzyskuje si za porednictwem adresów URL w takiej samej postaci. Na ry-
sunku 1.2 przedstawiono struktur adresów URL, których naleaoby uy 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 peni przenone, natomiast ju przebieg procesu rejestracji
aplikacji zaley od serwera. Aby na przykad 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) zaley od rodzaju uywanego serwera. Podobnie od rodzaju serwera zaley sam
sposób wskazywania serwerowi, e aplikacja powinna by wywoywana przy uyciu adresu
URL w postaci http://komputer/myWebApp/.

W tym punkcie przyjto zaoenie, e wszystkie kroki zmierzajce do zainstalowania i skon-
figurowania serwera zostay ju wykonane. Wicej informacji na temat konfiguracji serwe-
ra mona znale w jego dokumentacji, w pierwszym rozdziale pierwszego tomu niniejszej
ksiki lub (w przypadku uytkowników serwera Tomcat) w uaktualnianym na bieco prze-
wodniku po instalacji i konfiguracji serwera, dostpnym w witrynie http://www.coreservlets.

´com. W tym miejscu zaprezentowany zostanie tylko krótki przykad, a nastpnie w jednym
z kolejnych podpunktów opisana zostanie procedura rejestracji na serwerze Tomcat. Szcze-
góowy opis procesu wdroenia przykadowej 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 wdraania aplikacji
internetowych”, standardow strategi jest tworzenie aplikacji w rodowisku programistycz-
nym i regularne kopiowanie jej do poszczególnych katalogów wdroeniowych w celu przete-
stowania rozwizania na rónych serwerach. Odradza si umieszczanie katalogu rozwojowego

background image

24

Core Java Servlets i JavaServer Pages

bezporednio w katalogu wdroeniowym serwera, poniewa znacznie utrudni to wdroenie
aplikacji na kilku serwerach, trudno bdzie pracowa nad aplikacj w czasie jej dziaania,
a take utrudnione zostanie nadanie odpowiedniej organizacji plików. Lepszym rozwizaniem
jest uycie oddzielnego katalogu rozwojowego i zastosowanie jednej ze strategii opisanych
w punkcie 1.4, „Strategie rozwoju i wdraania aplikacji internetowych”. Najprostszym rozwi-
zaniem jest utworzenie skrótu (w systemie Windows) lub dowizania symbolicznego (w ro-
dowisku UNIX/Linux), prowadzcego do katalogów wdroeniowych poszczególnych serwe-
rów, oraz kopiowanie caego katalogu rozwojowego za kadym razem, gdy przyjdzie czas na
wdroenie aplikacji. Na przykad w systemie Windows przy uyciu prawego przycisku myszy
mona przecign 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. Moliwo wdraania aplikacji internetowych przez kopiowanie
struktury katalogów do jednego z katalogów serwera to tak zwane wdraanie na gorco
(ang. hot-deployment) albo wdraanie automatyczne (ang. auto-deployment). Katalog
w strukturze katalogów serwera, który odpowiada za t funkcj, to tak zwany katalog
wdraania na gorco
(ang. hot-deploy directory) albo katalog wdraania automatycznego
(ang. auto-deploy directory). Wikszo serwerów WWW, jeli nie wszystkie wspóczesne
serwery WWW, obsuguje taki wanie sposób wdraania aplikacji. Aby zwikszy kontrol
nad procesem wdroenia, mona odpowiednio zmodyfikowa zawarto pliku katalog_

´tomcat/conf/server.xml (jest to plik charakterystyczny tylko dla serwera Tomcat), tak aby
odwoywa si on do aplikacji.

Poniej przedstawiono kolejne czynnoci, jakie trzeba wykona, aby utworzy aplikacj inter-
netow dostpn za porednictwem adresu URL rozpoczynajcego si od http://komputer/

´myWebApp.

1.

Utworzy struktur katalogów dla aplikacji internetowej, w której katalog
gówny bdzie nosi nazw myWebApp
. Poniewa jest to nasza wasna struktura
rozwojowa, mona j umieci w dowolnie wybranej lokalizacji. Struktura katalogów
powinna by zgodna ze struktur przedstawion w punkcie 1.2, „Struktura aplikacji
internetowych”. Aby zmniejszy liczb czynnoci, jakie naley wykona w ramach
tego kroku, z ftp://ftp.helion.pl/przyklady/jsp2w2.zip mona pobra aplikacj app-
blank
. Zawiera ona wszystkie niezbdne katalogi oraz przykadowy deskryptor
wdroenia web.xml. Pozostaje wówczas tylko zmieni nazw katalogu gównego
app-blank na myWebApp.

Jeeli natomiast zapadnie decyzja o rcznym utworzeniu wymaganych katalogów,
naley postpowa zgodnie z dalszym opisem. Najpierw trzeba utworzy katalog
o nazwie myWebApp — moe 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. Nastpnie naley
utworzy deskryptor wdroenia web.xml i umieci go w katalogu WEB-INF.
Szczegóowe informacje na temat deskryptora wdroenia znajduj si w rozdziale 2.,
„Kontrolowanie dziaania aplikacji przy uyciu deskryptora web.xml”. Na razie

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

25

wystarczy tylko skopiowa plik web.xml znajdujcy si w katalogu katalog_tomcat/

´webapps/ROOT/WEB-INF albo uy wersji deskryptora znajdujcej si w aplikacji
app-blank.

Po utworzeniu odpowiedniej struktury katalogów naley w katalogu myWebApp
umieci 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
bdcym deskryptorem
wdroenia.
W odrónieniu od stron JSP serwlety musz by deklarowane jawnie.
Naley zatem poda pen ciek dostpu do klasy serwletu, aby wskaza serwerowi,
e serwlet ten istnieje. Dodatkowo konieczne jest wskazanie serwerowi adresów
URL, które po wpisaniu przez uytkownika powinny wywoa serwlet MyServlet.class.
Obydwie wspomniane czynnoci mona zrealizowa przez wstawienie w pliku
web.xml poniszego kodu:

<servlet>
<servlet-name>MyName</servlet-name>
<servlet-class>mypackage.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyName</servlet-name>
<url-pattern>/MyAddress</url-pattern>
</servlet-mapping>

Element

servlet

oraz jego podelementy wskazuj serwerowi nazw, za pomoc

której serwlet bdzie deklarowany, a take pen ciek dostpu do klasy serwletu.
Element

servlet-mapping

oraz jego podelementy wskazuj serwerowi serwlet,

który ma by wywoywany, gdy klient wywoa adres URL odpowiadajcy wzorcowi
wskazanemu jako warto elementu

url-pattern

. Zatem serwlet zadeklarowany

jako MyName bdzie wywoywany 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 nastpujce cieki dostpu: 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 mona by nastpnie zawrze w pliku WAR (wicej na ten
temat w punkcie 1.5) i umieci go w katalogu C:\katalog_tomcat\webapps.

4.

Opcjonalnie — w pliku server.xml dopisa element

Context

. Domylnie Tomcat

skonfiguruje aplikacj internetow w taki sposób, by prefiks jej adresu URL dokadnie
odpowiada nazwie gównego katalogu tej aplikacji. Jeeli takie rozwizanie bdzie
wystarczajce, mona pomin krok opisywany w tym punkcie. Jeeli natomiast
konieczne jest zmodyfikowanie tego etapu rejestracji aplikacji, w pliku katalog_tomcat/

´conf/server.xml mona doda element

Context

. Przed rozpoczciem edycji

zawartoci pliku server.xml naley utworzy jego kopi bezpieczestwa, poniewa
nawet drobny bd skadniowy uniemoliwi prawidowe 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 umieci obok pliku web.xml, w katalogu WEB-INF aplikacji internetowej.

background image

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 mona decydowa, czy naley uywa plików cookies albo czy
naley przepisywa adresy URL w celu ledzenia sesji; mona take wcza
i wycza moliwo przeadowywania serwletów (to znaczy monitorowa klasy
pod ktem zachodzcych w nich zmian i przeadowywa serwlety tych klas,
których pliki na dysku ulegy zmianie). Mona równie ustawia poziomy
debugowania. Jednak w przypadku prostych aplikacji internetowych wystarczy
uycie tylko dwóch wymaganych atrybutów:

path

(prefiks adresu URL) oraz

docBase

(bazowy katalog instalacyjny dla aplikacji internetowych wzgldem

katalogu katalog_tomcat/webapps). Definicja elementu

Context

powinna wyglda

podobnie do poniszej:

<Context path="/jaka-aplikacja" docBase="myWebApp" />

Naley pamita, by jako prefiks adresu URL nie podawa prefiksu /examples,
poniewa jest on ju uywany przez Tomcat jako prefiks dla przykadowych aplikacji
internetowych.

Na serwerze Tomcat nie naley uywa prefiksu /examples w roli prefiksu adresów
URL aplikacji internetowych.

5.

Wywoa stron JSP i serwlet. Adres URL http://komputer/myWebApp/

´myPage.jsp wywoa stron JSP, za adres http://komputer/myWebApp/MyAddress
spowoduje wywoanie serwletu. W trakcie rozwoju aplikacji prawdopodobnie jako
nazwa komputera uywana bdzie nazwa localhost. W podawanych adresach URL
zaoono, e plik konfiguracyjny serwera Tomcat (katalog_tomcat/conf/server.xml)
zmodyfikowano w taki sposób, by uywany by port numer 80, zgodnie z zaleceniami
w instrukcji instalacji i konfiguracji serwera, znajdujcej si w witrynie
http://www.coreservlets.com/. Jeeli takiej zmiany nie wprowadzono,
naley uy adresów w postaci http://komputer:8080/myWebApp/myPage.jsp
oraz http://komputer:8080/myWebApp/MyAddress.

Rejestrowanie aplikacji internetowych na innych serwerach

Pierwsze dwie czynnoci opisane w poprzednim podrozdziale dotycz tworzenia przenonej
czci aplikacji internetowej i bd przebiega identycznie na kadym serwerze zgodnym
ze specyfikacj serwletów. Natomiast czynnoci dotyczce 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.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

27

Serwer BEA WebLogic

Podobnie jak Tomcat, serwer WebLogic udostpnia katalog automatycznego wdraania,
sucy do rejestrowania i wdraania aplikacji internetowych. Najpierw, jeeli jeszcze nie
zostao to zrobione, trzeba utworzy now domen o nazwie myDomain. Domen mona
utworzy przy uyciu 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, naley 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 wdroenia aplikacji
mona take uy konsoli WWW serwera WebLogic. W tym celu naley zalogowa si do
konsoli pod adresem http://localhost:7001/console/ (przy zaoeniu, e nie zmieniono domyl-
nych ustawie portu oraz e serwer jest uruchomiony na komputerze lokalnym). W panelu
konsoli po lewej stronie naley rozwin wze Deployments i klikn pozycj Web Application
Modules
, po czym klikn polecenie Deploy a New Web Application Module. W ten sposób
uruchomiony zostanie kreator wdroenia dziaajcy w przegldarce, w którym wystarczy
wykonywa kolejne wywietlane instrukcje. Po wdroeniu aplikacji internetowej strona JSP
bdzie dostpna pod adresem http://localhost:7001/myWebApp/myPage.jsp, za serwlet bdzie
dostpny 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 domylnie uywa osadzonego serwera
WWW Tomcat. Aby zarejestrowa aplikacj, naley 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 koczya si sowem .war. JBoss
wymaga, by sowem .war koczyy 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 naley skopiowa do
katalogu katalog_jboss/server/default/deploy. Jeeli w trakcie instalacji serwera JBoss
adne domylne ustawienia nie ulegy zmianie, strona JSP bdzie dostpna pod adresem
http://localhost:8080/myWebApp/myPage.jsp, natomiast serwlet bdzie wywoywany adresem
http://localhost:8080/myWebApp/MyAddress. Jeeli aplikacja zostaa spakowana w pliku
WAR, w celu jej wdroenia plik myWebApp.war trzeba umieci w tym samym katalogu
serwera JBoss.

Caucho Resin

Aby skorzysta z funkcji automatycznego wdraania na serwerze Caucho Resin, naley skopio-
wa ca struktur katalogów aplikacji internetowej (wcznie z jej katalogiem gównym)
lub plik WAR do katalogu katalog_resin/webapps. Jeeli domylne ustawienia serwera nie
zostay zmienione, strona JSP stanie si dostpna pod adresem http://localhost:8080/myWebApp/

´myPage.jsp, za serwlet bdzie dostpny pod adresem http://localhost:8080/myWebApp/

´MyAddress.

background image

28

Core Java Servlets i JavaServer Pages

1.4. Strategie rozwoju i wdraania

aplikacji internetowych

Gdy wszystko bdzie ju przygotowane do rozpoczcia procesu tworzenia nowej aplikacji
internetowej, naley wykona nastpujce trzy czynnoci:

1.

Utworzy struktur katalogów aplikacji. W katalogu rozwojowym trzeba
utworzy now struktur katalogów, zgodn ze struktur aplikacji internetowej
(wczajc w to plik web.xml znajdujcy si w katalogu WEB-INF), opisan
we wczeniejszej czci tego rozdziau. Najprostszym sposobem wykonania tej
czynnoci jest skopiowanie i zmiana nazwy aplikacji app-blank. (Jak pamitamy,
aplikacj app-blank oraz wszystkie inne przykadowe kody ródowe prezentowane
w ksice mona pobra z ftp://ftp.helion.pl/przyklady/jsp2w2.zip).

2.

Napisa kod ródowy aplikacji. Strony HTML i JSP trzeba umieci w katalogu
gównym lub jego podkatalogach, z wyjtkiem podkatalogu WEB-INF i META-INF.
Poszczególne pliki klas jzyka Java naley umieci 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.

Wdroy aplikacj. Ca struktur katalogów aplikacji internetowej
(w tym równie jej katalog gówny) trzeba skopiowa do katalogu wdraania
automatycznego serwera. Istnieje kilka rozwiza upraszczajcych to zadanie,
a najczciej stosowanymi s:

Q

Skopiowanie struktury do skrótu lub dowizania symbolicznego.

Q

Wykorzystanie funkcji wdraania udostpnianych przez zintegrowane rodowisko
programistyczne (IDE).

Q

Wykorzystanie narzdzia Ant lub podobnego.

Q

Uycie rodowiska IDE wraz z narzdziem Ant.

Uytkownicy dopiero poznajcy dziaanie serwletów i stron JSP mog pozosta przy pierwszej
opcji, za rozpoznawanie sposobu dziaania narzdzia Ant lub konkretnego rodowiska IDE
mona rozpocz po zaznajomieniu si przynajmniej z podstawami serwletów i stron JSP.
Trzeba jednak zaznaczy, e nie wspomniano o opcji polegajcej na umieszczeniu kodu
bezporednio w katalogu wdroeniowym serwera. Wprawdzie to wanie rozwizanie najcz-
ciej wybieraj pocztkujcy programici, wachlarz jego zastosowa w bardziej zaawansowa-
nych zadaniach jest tak skromny, e zaleca si, by nie stosowa go ju na samym pocztku.

W kolejnych podpunktach opisane zostan wszystkie cztery wspomniane opcje.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

29

Kopiowanie struktury do skrótu lub dowizania symbolicznego

W systemie Windows naley przej do katalogu nadrzdnego wobec katalogu automatycz-
nego wdroenia serwera. W przypadku serwera Tomcat bdzie to gówny katalog instalacyjny
katalog_tomcat. Katalog automatycznego wdroenia naley klikn prawym przyciskiem
myszy (na serwerze Tomcat bdzie to katalog webapps) i wybra polecenie Kopiuj. Nastpnie
trzeba przej do katalogu bezporednio nadrzdnego wobec gównego katalogu rozwojowego
(czyli katalogu o jeden wyszego w hierarchii ni myWebApp), klikn go prawym przyci-
skiem myszy i wybra polecenie Wklej skrót (a nie zwyke polecenie Wklej). Od teraz za ka-
dym razem, gdy przyjdzie ju czas na wdroenie aplikacji internetowej, naley klikn i przy-
trzyma wcinity prawy przycisk myszy na katalogu rozwojowym (na przykad myWebApp)
i przecign go do skrótu do katalogu wdroenia, po czym zwolni przycisk myszy. Pojawi
si wówczas menu podrczne, w którym naley wybra polecenie Kopiuj tutaj. Na rysunku 1.3
przedstawiono przykadow konfiguracj, która uatwi wdraanie i testowanie aplikacji
prezentowanych w tym rozdziale na serwerach Tomcat, WebLogic, JBoss i Resin. W systemie
UNIX mona uy dowiza symbolicznych (tworzonych poleceniem

ln –s

) w sposób po-

dobny do sposobu uywania skrótów w systemie Windows.

Rysunek 1.3.
Wykorzystanie
skrótów w celu
uproszczenia
procesu
wdraania
aplikacji

Zalet tego rozwizania jest to, e jest ono bardzo proste. Jest ono zatem dobre dla osób
pocztkujcych, które chc si skupi na poznawaniu dziaania serwletów i stron JSP, a nie
na narzdziach do wdraania aplikacji czy rodowiskach IDE.

Wad przedstawionego rozwizania jest to, e gdy uywanych jest kilka serwerów, konieczne
jest powtarzanie operacji kopiowania. Zaómy na przykad, e w rodowisku rozwojowym
funkcjonuje kilka rónych serwerów (Tomcat, Resin i tak dalej), na których regularnie trzeba
testowa implementowany kod ródowy. Druga wada polega na tym, e w takim rozwizaniu
na serwer kopiowane s zarówno pliki z kodem ródowym Javy, jak i pliki klas, cho tak
naprawd niezbdne s tylko te ostatnie. Na serwerze biurkowym nie ma to wikszego zna-
czenia, lecz gdy przyjdzie do wdroenia aplikacji na „prawdziwym” serwerze produkcyjnym,
pliki z kodem ródowym nie powinny na niego trafi.

background image

30

Core Java Servlets i JavaServer Pages

Wykorzystanie funkcji wdraania udostpnianych przez IDE

Wikszo 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 klikniciem myszy moliwe jest wdroenie aplikacji
internetowej na serwerze testowym, rozwojowym lub produkcyjnym.

Mimo i rodowiska IDE maj wiele niekwestionowanych zalet, nie s one jednak wolne od
wad. Wikszo prawdziwych rodowisk IDE trzeba najpierw pozna, co zajmuje troch
czasu. Nie mona si wic skoncentrowa na zadaniach stricte programistycznych, przynajm-
niej na pocztku. Ponadto czsto si zdarza, e programici s przerzucani z jednego projektu na
drugi, a programici pracujcy wspólnie nad dan aplikacj musz korzysta z takiego samego
rodowiska IDE. Gdy wic programista przejdzie do innego zespou projektowego, w którym
kompilacja i wdraanie aplikacji bd wykonywane w innym rodowisku IDE ni to, którego
dotd uywa programista, konieczne bdzie poznanie nowego narzdzia i przyzwyczajenie
si do pracy w nim. To z kolei bdzie wymaga powicenia dodatkowego czasu.

Uywanie narzdzi ant, maven i im podobnych

Narzdzie

ant

zaimplementowane przez Apache Foundation dziaa podobnie jak

make

w rodo-

wisku UNIX. Jednak

ant

zosta napisany w Javie (dziki czemu jest przenony) i powszech-

nie uwaa si, e w porównaniu z

make

jest prostszy w uyciu i bardziej rozbudowany. Wielu

programistów serwletów i stron JSP kompiluje i wdraa aplikacje wanie przy uyciu

ant

.

Sposób uywania narzdzia

ant

zosta opisany w dodatku „Tworzenie Aplikacji przy uyciu

narzdzia Apache ant”.

Ogólne informacje o

ant

s dostpne na stronie pod adresem http://ant.apache.org/manual/,

natomiast wskazówki dotyczce uywania

ant

z serwerem Tomcat znajduj si pod adresem

http://tomcat.apache.org/tomcat-5.5-doc/appdev/processes.html.

Gówn zalet takiego rozwizania jest elastyczno —

ant

jest tak rozbudowany, e obsu-

guje wszystkie etapy od kompilacji kodu ródowego Javy, przez kopiowanie plików a po
generowanie plików archiwum WAR (wicej na ten temat w punkcie 1.5).

Kolejnym narzdziem, które przyciga uwag programistów Javy, jest narzdzie

maven

. Na-

rzdzie to rozszerza moliwoci

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 uywania. Dlatego te

wan rol odgrywaj w nim konwencje.

maven

moe na przykad skompilowa kod ródowy

nawet wówczas, gdy programista nie wskae go w folderze projektowym. Jest to moliwe
dziki temu, e w

maven

przyjto, i zgodnie z konwencj kod ródowy jzyka Java znajduje

si w folderze src/main/java. Oczywicie, zaoenie to mona zmienia, ale po co? Dziki
zastosowaniu konwencji pliki konfiguracyjne programu

maven

s, w odrónieniu od

ant

, bardzo

krótkie i zrozumiae. Wicej informacji na temat tego narzdzia mona znale na stronie
http://maven.apache.org.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

31

Wad zarówno

ant

, jak i

maven

jest konieczno powicenia okrelonego 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
midzy powicaniem czasu na nauk konkretnego rodowiska IDE a poznawaniem narzdzia

ant

albo

maven

jest to, e w coraz wikszej liczbie rodowisk

ant

i

maven

s uywane jako

rozwizanie standardowe, zamiast narzdzi charakterystycznych tylko dla tych rodowisk.
Mona si wic spodziewa, e wiadomoci na temat

ant

lub

maven

bdzie mona wyko-

rzystywa równie w dalszej przyszoci.

Uywanie IDE wraz z narzdziem Ant

rodowiska IDE zwikszaj efektywno pracy programistów, poniewa pomagaj tworzy
kod ródowy, natomiast ograniczaj moliwoci jego przenoszenia. Narzdzie

ant

z kolei

pozwala na tworzenie aplikacji przenonych, lecz w adnej mierze nie pomaga pisa kodu
ródowego. Co z tym zrobi?

Przepa dzielc

ant

i IDE mona nieco zmniejszy przez uywanie rodowiska IDE zinte-

growanego z

ant

. Dziki temu nadal mona pracowa z ulubionym rodowiskiem programi-

stycznym, które wspiera proces pisania kodu ródowego, a jednoczenie jednym klikni-
ciem myszy wywouje skrypty

ant

odpowiadajce za skompilowanie i wdroenie aplikacji.

Takiego rozwizania mona uywa nawet w rodowiskach, które z

ant

nie s zintegrowane

(cho wikszo wspóczesnych rodowisk tak integracj ju posiada), lecz bdzie to wyma-
ga przeczania si midzy wierszem polece a rodowiskiem programistycznym.

Takie podejcie doskonale sprawdza si w prawdziwych projektach. Programici uywaj
ulubionych IDE, w których pisanie kodu jest bardziej efektywne, za sam projekt nie jest
naraony na powstawanie niespójnoci w trakcie wdroenia, poniewa kompilacja i wdro-
enie s przeprowadzane przez ten sam przenony skrypt

ant

. Uczestniczylimy w projektach,

w których poszczególni programici nalecy do zespou projektowego tworzcego jedn
aplikacj internetow korzystali z rónych IDE; niektórzy z nich pracowali nawet w odmien-
nych systemach operacyjnych. Proces wdraania aplikacji natomiast pozostawa spójny, a sami
programici byli zadowoleni z moliwoci uywania swoich ulubionych narzdzi progra-
mistycznych. A czy zadowolenie programisty nie jest najwaniejsze?

1.5. Umieszczanie aplikacji internetowych

w plikach WAR

Pliki archiwum WWW (ang. Web archive — WAR) doskonale nadaj si do czenia w poje-
dynczym archiwum caych aplikacji internetowych. Jeden duy plik z aplikacj zastpujcy
wiele maych plików znacznie atwiej jest przenosi z serwera na serwer.

Archiwum WAR jest tak naprawd plikiem JAR z rozszerzeniem .war i tworzy si go zwykym
poleceniem

jar

. Aby na przykad umieci ca aplikacj aplikacja_internetowa w pliku

WAR o nazwie aplikacja_internetowa.war, naley przej do katalogu aplikacja_internetowa
i wykona nastpujce polecenie:

background image

32

Core Java Servlets i JavaServer Pages

jar cvf aplikacja_internetowa.war *

Pliku WAR nie czy z poleceniem

jar

adna specjalna zaleno. Polecenie

jar

jest tak

naprawd jednym z wielu narzdzi, dziki któremu mona tworzy archiwa plików. Takie
samo archiwum mona utworzy na przykad przy uyciu programu WinZip (albo

tar

w systemie UNIX). Wystarczy w tym celu wskaza nazw pliku docelowego z rozszerzeniem
.war zamiast rozszerzenia .zip.

Oczywicie, nic nie stoi na przeszkodzie, by w trakcie tworzenia archiwów WAR wykorzy-
sta inne opcje narzdzia

jar

(na przykad cyfrowo podpisywa klasy), tak samo jak wobec

standardowych plików JAR. Wicej szczegóowych informacji na ten temat mona 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 uyty zostanie serwer Tomcat, lecz opisywane czynnoci bd przebiega podobnie
równie w przypadku wykorzystania innych serwerów. Wicej informacji na ten temat przed-
stawiono w punkcie 1.3, „Rejestrowanie aplikacji internetowych na serwerze”.

W celu utworzenia aplikacji naley wykona nastpujce 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.

Umieci 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 bdzie j wywoywa.

7.

Skopiowa aplikacj testApp do katalogu katalog_tomcat/webapps.

8.

Uruchomi serwer Tomcat.

9.

Wywoa aplikacj testApp, wpisujc adres URL w postaci
http://localhost/testApp/nazwaZasobu.

Wymienione czynnoci zostan szczegóowo opisane w kolejnych sekcjach.

background image

Rozdzia 1.

Q

Uywanie i wdraanie 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 kadej aplikacji internetowej
zgodnej ze specyfikacj J2EE. Archiwum to zawiera take wyjciow wersj deskryptora wdro-
enia web.xml, w którym znajduje si odwzorowanie wyczajce wywoywacz 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 pamita, by katalog
testApp trafi do katalogu, który bdzie 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 mona pobra z ftp://ftp.helion.pl/

´przyklady/jsp2w2.zip. Pliki mona pobra oddzielnie jeden po drugim bd te w postaci po-
jedynczego archiwum testAppFiles.zip, a nastpnie rozpakowa je w wybranym katalogu.

Dodanie plików test.html i test.jsp do aplikacji internetowej testApp

Pliki test.html i test.jsp naley umieci w katalogu testApp, a nastpnie 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 zwracajcy adres URL, z którego wywoano
stron. Na listingach 1.1 i 1.2 przedstawiono kompletne kody ródowe obydwóch plików.

Listing 1.1. test.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>Test HTML</TITLE></HEAD>
<BODY BGCOLOR="#FDF5E6">
<H1>Test HTML</H1>
Witaj.
</BODY></HTML>

Listing 1.2. test.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>Test JSP</TITLE></HEAD>
<BODY BGCOLOR="#FDF5E6">
<H1>Test JSP</H1>
Uyto nastpujcego adresu URL:
<%= request.getRequestURL() %>
</BODY></HTML>

background image

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, wedug której serwlet naley do pakietu

coreservlets

. Zatem plik TestServlet.java musi znale si w tym pakiecie, zanim bdzie

mona go skompilowa. Podobnie jak plik test.jsp, plik TestServlet.class zawiera kod zwra-
cajcy adres URL, za pomoc którego nastpio wywoanie serwletu. Peny kod ródowy
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 =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
out.println
(docType +
"<HTML>\n" +
"<HEAD><TITLE>Test serwletu</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>Test serwletu</H1>\n" +
"Uyto nastpujcego adresu URL: " + request.getRequestURL() + "\n" +
"</BODY></HTML>");
}
}

Kompilacja pliku TestServlet.java

Naley pamita, by w zmiennej rodowiskowej

CLASSPATH

wskaza interfejs programistyczny

(API) serwletów. Serwer Tomcat udostpnia interfejs w postaci pliku servlet-api.jar, znajdu-
jcym si w katalogu katalog_tomcat/common/lib. W systemie Windows zmienn

CLASSPATH

mona zdefiniowa w wierszu polece systemu operacyjnego, przez wykonanie nastpujcego
polecenia:

set CLASSPATH=katalog_tomcat\common\lib\servlet-api.jar

Natomiast w rodowiskach zgodnych z UNIX/Linux zmienn

CLASSPATH

mona zdefiniowa

przy uyciu konsoli, przez wykonanie polecenia o nastpujcej treci:

CLASSPATH=katalog_tomcat/common/lib/servlet-api.jar

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

35

Po odpowiednim zdefiniowaniu zmiennej

CLASSPATH

mona ju skompilowa plik TestServlet.

´java. W tym celu naley przej do katalogu testApp/WEB-INF/classes/coreservlets i wpi-
sa nastpujce polecenie:

javac TestServlet.java

Gdy kompilacja dobiegnie koca, 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 wywouje

Naley przej do katalogu testApp/WEB-INF i otworzy w ulubionym edytorze jzyka XML
(Extensible Markup Language) albo edytorze tekstu plik web.xml. Aby zadeklarowa klas
TestServlet.class naley bezporednio za komentarzem

<!-- Tutaj naley umieci wasne

wpisy -->

umieci ponisze wiersze kodu:

<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>coreservlets.TestServlet</servlet-class>
</servlet>

Przedstawiony fragment zawiera deklaracj serwletu o nazwie

Test

, który reprezentuje kla-

s TestServlet.class. Warto zwróci uwag, e element

<servlet-class>

wskazuje w pen

nazw klasy serwletu w postaci

nazwaPakietu.nazwaKlasy

(bez rozszerzenia .class).

W nastpnym kroku trzeba wskaza serwerowi Tomcat adresy URL, które maj wywoywa
serwlet

Test

. W tym celu w pliku web.xml naley bezporednio po zamkniciu elementu

</servlet>

umieci nastpujce wiersze kodu:

<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>

Powysze wiersze wskazuj serwerowi Tomcat, e gdy klient wywoa aplikacj internetow
testApp przy uyciu adresu URL w postaci http://komputer/testApp/test, powinien zosta
wywoany wczeniej zadeklarowany serwlet Test. Zawarto pliku web.xml przedstawiono
na listingu 1.4.

Listing 1.4. web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Plik web.xml z szablonu aplikacji WWW app-blank,
z witryny http://courses.coreservlets.com/Course-Materials/.
Zawiera dwa standardowe elementy: welcome-file-list
oraz servlet-mapping, który wycza wywoywacz serwletu.
-->
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
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">

background image

36

Core Java Servlets i JavaServer Pages

<!-- Tutaj naley umieci wasne wpisy -->
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>coreservlets.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>

<!-- Wyczenie wywoywacza serwletu -->
<servlet>
<servlet-name>NoInvoker</servlet-name>
<servlet-class>coreservlets.NoInvokerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NoInvoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

<!-- Jeeli adres URL zawiera katalog bez nazwy pliku, nastpi próba wywoania pliku index.jsp,
a nastpnie index.html. Jeeli aden z tych plików nie zostanie znaleziony,
efekt bdzie zalee od serwera (np. moe zosta wywietlona zawarto katalogu).
-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

Wicej informacji na temat pliku web.xml znajduje si w rozdziale 2., „Kontrolowanie dziaania
aplikacji przy uyciu deskryptora web.xml”.

Skopiowanie aplikacji testApp do katalogu katalog_tomcat/webapps

W tym kroku naley skopiowa ca struktur katalogów, poczwszy od katalogu gównego
aplikacji testApp, do katalogu automatycznego wdroenia na serwerze Tomcat katalog_tomcat/

´webapps. Alternatywnie mona spakowa aplikacj testApp do pliku WAR (przy uyciu
polecenia

jar

, programu WinZip albo narzdzia

tar

lub innego, podobnego programu),

a nastpnie skopiowa sam plik WAR do katalogu katalog_tomcat/webapps. Bez wzgldu
na to, czy do katalogu docelowego trafi aplikacja w swojej „rozdrobnionej” wersji, czy jako
plik WAR, ostateczny efekt bdzie identyczny.

Uruchomienie serwera Tomcat

Serwer Tomcat mona uruchomi w systemie Windows przez wywoanie pliku katalog_tomcat/

´bin/startup.bat. W systemie UNIX/Linux naley w tym celu wywoa plik katalog_tomcat/

´bin/startup.sh. Tomcat odnajdzie nowy katalog w swym katalogu automatycznego wdra-
ania i automatycznie zarejestruje i wdroy aplikacj internetow testApp.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

37

Wywoanie aplikacji testApp przy uyciu adresu URL

w postaci http://localhost/testApp/zasób

Wywoanie adresów URL w postaci http://localhost/testApp/test.html oraz http://localhost/

´testApp/someDirectory/test.html spowoduje wywietlenie w przegldarce pliku test.html.
Wywoanie adresów http://localhost/testApp/test.jsp oraz http://localhost/testApp/some

´Directory/test.jsp spowoduje wywoanie pliku test.jsp, natomiast adres URL w postaci
http://localhost/testApp/test wywoa serwlet TestServlet.class.

Wszystkie przytoczone adresy zadziaaj przy zaoeniu, e zgodnie z zaleceniem przedsta-
wionym w pierwszym tomie niniejszej ksiki w pliku konfiguracyjnym serwera Tomcat
(katalog_tomcat/conf/server.xml) wskazany zostanie port numer 80. Jeeli zmiana ta nie zostaa
wprowadzona, wystarczy we wszystkich adresach URL zastpi sowo localhost sowem
localhost:8080. Na rysunkach od 1.4 do 1.8 przedstawiono zrzuty ekranów bdcych wynikiem
wywoania poszczególnych zasobów.

Rysunek 1.4.
Wynik wywoania
adresu
http://localhost/

´

testApp/test.html

Rysunek 1.5.
Wynik wywoania
adresu
http://localhost/

´

testApp/test.jsp

background image

38

Core Java Servlets i JavaServer Pages

Rysunek 1.6.
Wynik wywoania
adresu
http://localhost/

´

testApp/

´

someDirectory/

´

test.html

Rysunek 1.7.
Wynik wywoania
adresu
http://localhost/

´

testApp/

´

someDirectory/

´

test.jsp

Rysunek 1.8.
Wynik wywoania
adresu
http://localhost/

´

testApp/test

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

39

1.7. Wspóuytkowanie danych

przez aplikacje internetowe

Jednym z gównych celów aplikacji internetowych jest oddzielenie danych od udostpnianych
funkcji. Kada aplikacja internetowa utrzymuje wasn tabel sesji oraz wasny kontekst
serwletów. Ponadto kada aplikacja uywa wasnego moduu adowania klas. Dziki temu
wyeliminowano problemy zwizane z konfliktami nazw, lecz z drugiej strony oznacza to, e
do wspóuytkowania danych midzy aplikacjami nie mona uywa metod i pól statycznych.
Nadal jednak wspóuytkowanie danych jest moliwe dziki plikom cookies albo przy uyciu
obiektów

ServletContext

powizanych z konkretnymi adresami URL. Obydwa podejcia

cakiem dobrze sprawdzaj si wówczas, gdy ilo danych wymienianych midzy aplikacjami
jest niewielka, lecz gdy wolumen wymienianych danych bdzie duy i wymiana bdzie za-
chodzi stosunkowo czsto, naley rozway moliwo poczenia tych aplikacji w jedn
wiksz aplikacj internetow. Poniej krótko opisano obydwie wymienione powyej metody
wspóuytkowania danych midzy aplikacjami.

Q

Pliki cookies. Pliki cookies s utrzymywane przez przegldark, a nie przez serwer.
Dziki temu cookies mog by wspóuytkowane przez wiele aplikacji internetowych,
jeli tylko ustawiono je w taki sposób, by dotyczyy dowolnej cieki na serwerze.
Domylnie przegldarka wysya pliki cookies jedynie do tych adresów URL,
których prefiks jest taki sam, jak prefiks adresu URL, z którego one pochodz.
Na przykad jeeli plik cookie zostanie przesany ze strony o adresie
http://komputer/cieka1/JakiPlik.jsp, wówczas przegldarka bdzie
przesya cookie do stron o adresach http://komputer/cieka1/JakiInnyPlik.jsp
oraz http://komputer/cieka1/cieka2/DowolnyAdres, natomiast do adresu
http://komputer/cieka3/DowolnyAdres cookie ju nie zostanie wysane.
Poniewa aplikacje internetowe zawsze maj unikatowe prefiksy adresu URL,
takie zachowanie przegldarek spowoduje, e plik cookie nigdy nie bdzie
uytkowany przez dwie róne aplikacje.

Jednak zgodnie z informacjami zawartymi w rozdziale 8. pierwszego tomu tej
ksiki to standardowe ustawienie mona zmieni za pomoc metody

setPath

klasy

Cookie

. Wystarczy wywoa t metod z argumentem

"/"

, dziki czemu

przegldarka zacznie wysya pliki cookie do wszystkich adresów URL
znajdujcych si na komputerze, z którego otrzymany zosta oryginalny plik:

Cookie c = new Cookie("nazwa", "warto");
c.setMaxAge(…);
c.setPath("/");
response.addCookie(c);

Q

Obiekty

ServletContext

powizane z okrelonym adresem URL. W ramach serwletu

kontekst serwletu aplikacji internetowej odczytuje si przez wywoanie jego
metody

getServletContext

(dziedziczonej z klasy

GenericServlet

). Na stronie JSP

uywa si natomiast do tego celu predefiniowanej zmiennej

application

. W obydwóch

przypadkach zwracan wartoci jest kontekst serwletu powizany z serwletem
lub stron JSP, z których pochodzio wywoanie. Dodatkowo mona równie uy
metody

getContext

obiektu

ServletContext

, która zwróci kontekst serwletu

background image

40

Core Java Servlets i JavaServer Pages

— niekoniecznie wasnego — powizanego ze wskazanym adresem URL.
Podejcie to przedstawiono w poniszym fragmencie kodu:

ServletContext myContext = getServletContext();
String url = "/prefiksAplikacjiWWW";
ServletContext otherContext = myContext.getContext(url);
Object someData = otherContext.getAttribute("jakiKlucz");

Ani jedno, ani drugie przedstawione rozwizanie nie jest idealne.

Wad plików cookie jest to, e mona w nich przechowywa tylko ograniczon ilo danych.
Kada warto znajdujca si w pliku cookie jest cigiem znaków, a dugo kadego cigu
znaków jest ograniczona do czterech kilobajtów. Zatem wspóuytkowanie wikszych iloci
danych wymaga uycia bazy danych, a w plikach cookie przechowywane bd wówczas
jedynie wartoci penice rol kluczy do tej bazy, a wic do danych rzeczywistych.

Sab stron rozwizania bazujcego na kontekstach serwletów jest to, e z góry trzeba
w nich zna prefiksy adresów URL uywanych przez inne aplikacje internetowe. Zwykle
oczekuje si moliwoci dowolnego zmieniania prefiksu adresu aplikacji bez koniecznoci
wprowadzania jakichkolwiek zmian w kodzie aplikacji. Uywanie metody

getContext

t

elastyczno ogranicza. Drug wad jest to, e ze wzgldów bezpieczestwa na serwerach
mona blokowa dostp do kontekstów serwletów

ServletContext

niektórych aplikacji inter-

netowych. Gdy co takiego nastpi, metoda

getContext

bdzie zwraca warto

null

. Na

przykad w niektórych wersjach serwera Tomcat moliwo wspóuytkowania kontekstów
jest domylnie wczona, natomiast w innych wersjach serwera moliwo t trzeba jawnie
udostpni. Choby na serwerze Tomcat w wersji 5.5.7 jako cz elementu

Context

w pliku

katalog_tomcat/conf/context.xml mona doda atrybut

crossContext="true"

, który wcza

moliwo wspóuytkowania kontekstów i czyni j rozwizaniem domylnym dla wszystkich
wdroonych aplikacji. Z kolei cakowite pominicie atrybutu

crossContext

powoduje, e

Tomcat bdzie si zachowywa w sposób domylny, to znaczy wspóuytkowanie kontekstów

ServletContext

midzy aplikacjami bdzie zabronione.

Obydwie metody wspóuytkowania danych zaimplementowano w serwletach

SetSharedInfo

oraz

ShowSharedInfo

, których kody ródowe przedstawiono odpowiednio na listingach

1.5 i 1.6. Obydwa te serwlety zostay odwzorowane na adresy URL w deskryptorze wdroenia
widocznym na listingu 1.7. Serwlet

SetSharedInfo

tworzy wasne wpisy w obiekcie sesji,

a take kontekst serwletu. Ponadto serwlet ten tworzy dwa pliki cookie. Pierwszy z nich
zawiera ciek domyln wskazujc, e cookie powinno by stosowane jedynie dla adresów
URL z prefiksem identycznym jak URL, z którego nadeszo pierwotne danie. Drugi plik
cookie zawiera ciek w postaci

"/"

, co oznacza, e cookie powinno by stosowane do

wszystkich adresów URL na komputerze. Na kocu serwlet

SetSharedInfo

przekierowuje

klienta do serwletu

ShowSharedInfo

, który z kolei wywietla nazwy wszystkich atrybutów sesji,

wszystkich atrybutów w biecym kontekcie serwletu, wszystkich atrybutów w kontekcie
serwletu dotyczcego 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.*;

background image

Rozdzia 1.

Q

Uywanie i wdraanie 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); // cieka domylna
Cookie c2 = new Cookie("cookieTest2", "Cookie numer dwa");
c2.setMaxAge(3600);
// jedna godzina
c2.setPath("/"); // bezporednie wyznaczenie cieki: wszystkie adresy URL
response.addCookie(c2);
String url = request.getContextPath() +
"/showSharedInfo";
// na wypadek, gdyby ledzenie sesji bazowao 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óuytkowane";
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">" +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
"<UL>\n" +
" <LI>Sesja:");
HttpSession session = request.getSession(true);
Enumeration attributes = session.getAttributeNames();
out.println(getAttributeList(attributes));
out.println(" <LI>Biecy kontekst serwletu:");
ServletContext application = getServletContext();
attributes = application.getAttributeNames();
out.println(getAttributeList(attributes));
out.println(" <LI>Kontekst serwletu /shareTest1:");

background image

42

Core Java Servlets i JavaServer Pages

application = application.getContext("/shareTest1");
if (application == null) {
out.println("Wspóuytkowanie kontekstów wyczone");
} else {
attributes = application.getAttributeNames();
out.println(getAttributeList(attributes));
}
out.println(" <LI>Pliki cookies:<UL>");
Cookie[] cookies = request.getCookies();
if ((cookies == null) || (cookies.length == 0)) {
out.println(" <LI>Nie znaleziono plików cookie.");
} else {
Cookie cookie;
for(int i=0; i<cookies.length; i++) {
cookie = cookies[i];
out.println(" <LI>" + cookie.getName());
}
}
out.println(" </UL>\n" +
"</UL>\n" +
"</BODY></HTML>");
}

private String getAttributeList(Enumeration attributes) {
StringBuffer list = new StringBuffer(" <UL>\n");
if (!attributes.hasMoreElements()) {
list.append(" <LI>Nie znaleziono atrybutów.");
} else {
while(attributes.hasMoreElements()) {
list.append(" <LI>");
list.append(attributes.nextElement());
list.append("\n");
}
}
list.append(" </UL>");
return(list.toString());
}
}

Listing 1.7. web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Plik web.xml z szablonu aplikacji WWW app-blank,
z witryny http://courses.coreservlets.com/Course-Materials/.
Zawiera dwa standardowe elementy: welcome-file-list
oraz servlet-mapping, który wycza wywoywacz serwletu.
-->
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
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">

<!-- Tutaj naley umieci wasne wpisy -->
<servlet>
<servlet-name>setSharedInfoServlet</servlet-name>

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

43

<servlet-class>coreservlets.SetSharedInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>setSharedInfoServlet</servlet-name>
<url-pattern>/setSharedInfo</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>showSharedInfoServlet</servlet-name>
<servlet-class>coreservlets.ShowSharedInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>showSharedInfoServlet</servlet-name>
<url-pattern>/showSharedInfo</url-pattern>
</servlet-mapping>

<!-- Wyczenie wywoywacza serwletu -->
<servlet>
<servlet-name>NoInvoker</servlet-name>
<servlet-class>coreservlets.NoInvokerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NoInvoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

<!-- Jeeli URL zawiera katalog bez nazwy pliku, nastpi próba wywoania pliku index.jsp,
a nastpnie index.html. Jeeli aden z tych plików nie zostanie znaleziony,
efekt bdzie zalee od serwera (np. moe zosta wywietlona zawarto katalogu).
-->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

W celu sprawdzenia dziaania przedstawionej aplikacji naley uruchomi tylko serwlet

SetSharedInfo

z aplikacji shareTest1, a po nim wywoa serwlet

ShowSharedInfo

aplikacji

shareTest1 oraz shareTest2. Nie naley natomiast wywoywa serwletu

ShowSharedInfo

z aplikacji shareTest2, poniewa nie zilustruje on mechanizmu wspóuytkowania danych
przez te dwie aplikacje.

Na rysunku 1.9 przedstawiono wynik wywoania przez uytkownika serwletów

SetSharedInfo

i

ShowSharedInfo

z aplikacji internetowej, której przypisano prefiks adresu URL /shareTest1.

Dla serwletu

ShowSharedInfo

dostpne s:

Q

Wasny atrybut sesji.

Q

Atrybuty znajdujce si w domylnym kontekcie serwletu — wasny
(utworzony jawnie przez serwlet

ShowSharedInfo

) oraz standardowy

(utworzony automatycznie przez serwer).

Q

Atrybuty wasny i standardowy, znajdujce si w kontekcie serwletu odczytanym
przez metod

getContext("/shareTest1")

. W tym przypadku kontekst serwletu jest

tosamy z domylnym kontekstem serwletu.

Q

Dwa jawnie utworzone pliki cookie oraz cookie utworzone przez system i uywane
przez mechanizm ledzenia sesji.

background image

44

Core Java Servlets i JavaServer Pages

Rysunek 1.9.
Wynik wywoania
serwletów
SetSharedInfo
i ShowSharedInfo
z tej samej
aplikacji
internetowej

Na rysunku 1.10 z kolei przedstawiono wynik póniejszego wywoania przez uytkownika
identycznego serwletu

ShowSharedInfo

zainstalowanego w aplikacji internetowej, której

przypisano prefiks adresu URL

/shareTest2

. Dla serwletu dostpne s:

Q

Standardowe atrybuty zawarte w domylnym kontekcie serwletu.

Q

Atrybuty wasny i standardowy znajdujce si w kontekcie serwletu odczytanym
przez metod

getContext("/shareTest1")

; w tym przypadku jest to kontekst inny

ni domylny kontekst serwletu.

Q

Dwa pliki cookie: jeden utworzony jawnie, którego ciek jest

"/"

,

oraz drugi, utworzony przez system, uywany przez mechanizm ledzenia sesji
(w nim równie uywana jest wasna cieka

"/"

).

Z kolei nastpujce elementy s dla serwletu niewidoczne:

Q

Atrybuty znajdujce si w obiekcie sesji.

Q

Wasne atrybuty znajdujce si w domylnym kontekcie serwletu.

Q

Jawnie utworzone pliki cookie, w których uyto cieki domylnej.

background image

Rozdzia 1.

Q

Uywanie i wdraanie aplikacji internetowych

45

Rysunek 1.10.
Wynik wywoania
serwletu
SetSharedInfo
w jednej aplikacji
internetowej
oraz serwletu
ShowSharedInfo
z drugiej aplikacji
internetowej


Wyszukiwarka

Podobne podstrony:
Java Servlet i JavaServer Pages Tom 1 Wydanie II 2
Java Servlet i JavaServer Pages Tom 1 Wydanie II
Java Servlet i JavaServer Pages Tom 1 Wydanie II jsjsp1
Java Servlet i JavaServer Pages Tom 1 Wydanie II jsjsp1
Java Servlet i JavaServer Pages Tom 1 Wydanie II 2
Zagadnienia maturalne z informatyki Wydanie II Tom II 2
Zagadnienia maturalne z informatyki Wydanie II Tom II zamat2
Zagadnienia maturalne z informatyki Wydanie II Tom II
Zagadnienia maturalne z informatyki Wydanie II Tom II zamat2
Zagadnienia maturalne z informatyki Wydanie II Tom II zamat2
Zagadnienia maturalne z informatyki Wydanie II Tom II
Komentarz do kodeksu prawa kanonicznego, tom II 1, Księga II Lud Boży , cz 1 Wierni chrześcijanie, P
02 TOM II v 1 1 2id 3815

więcej podobnych podstron