You are on page 1of 44

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE

Serwisy internetowe.
Programowanie
Autorzy: Marty Hall, Larry Brown
Tumaczenie: Szymon Kobalczyk,
Marek Paczyski, Rafa Szpoton
ISBN: 83-7361-155-X
Tytu oryginau: Core Web Programming, 2nd Edition
Format: B5, stron: 1254
Przykady na ftp: 1211 kB
Kompendium wiedzy dla profesjonalnych programistw serwisw internetowych.
Ksika zawiera komplet informacji niezbdnych twrcom zaawansowanych aplikacji
sieciowych i opisuje: HTML 4, Java Standard Edition 1.3, serwlety, JavaServer Pages
i wiele innych technologii. Serwisy internetowe. Programowanie czy te technologie
pokazujc, jak przy ich pomocy tworzy profesjonalne systemy.

ZAMW INFORMACJE
O NOWOCIACH

HTML 4: Dogbny, praktyczny opis struktury dokumentu HTML, jego elementw, ramek
i styli kaskadowych.

ZAMW CENNIK

Java 2: Podstawy skadni, projektowanie zorientowane obiektowo, aplety, tworzenie


animacji, narzdzie Java PlugIn, tworzenie interfejsu uytkownika (Swing), Java 2D API,
aplikacje wielowtkowe, programowanie sieciowe, korzystanie z baz danych i jeszcze
wicej.

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Technologie serwerowe Javy: Serwlety, JSP, XML, JDBC fundamentalne technologie


umoliwiajce budow aplikacji w Javie. Tematy zaawansowane dotycz tworzenia
wasnych bibliotek znacznikw JSP, czenia serwletw z JSP (MVC), tworzenie puli
pocze do baz danych, SAX, DOM i XSLT. Dokadnie omwiono take HTTP 1.1.
JavaScript: Dynamiczne tworzenie zawartoci stron WWW, ledzenie zachowania
uytkownika, sprawdzanie poprawnoci danych w formularzach HTML. Doczono
podrczny skorowidz komend.
Pierwsze wydanie tej ksiki jest uywane jako podrcznik na takich uczelniach jak
MIT, Standford, UC Berkeley, UCLA, Princeton i John Hopkins. Ksika, ktr trzymasz
w rku, zostaa zaktualizowana i uzupeniona o najnowsze technologie oraz
towarzyszce im przykady gotowego kodu.

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

wiatowy bestseller aktualne kompendium dla zaawansowanych programistw


serwisw WWW
Dogbny opis HTML 4, CSS, Javy 2, serwletw, JavaServer Pages i XML
Przykady kodu uywanego przez profesjonalistw

Spis treci
O Autorach...................................................................................................................................................21
Wstp.......................................................................................................................................................... 23

Cz I Jzyk HTML

29

Rozdzia 1. Projektowanie stron WWW w HTML 4.0................................................................................. 31


1.1. Jzyk HTML ........................................................................................................... 32
1.2. HTML 4.0 oraz inne standardy HTML ....................................................................... 33
1.3. Publikacja dokumentu WWW ................................................................................... 35
Tworzenie dokumentu ............................................................................................ 35
Umieszczenie dokumentu w sieci WWW................................................................... 35
Sprawdzanie poprawno dokumentu...................................................................... 37
1.4. Podstawowa struktura dokumentw HTML ............................................................... 38
Szablon dokumentu HTML...................................................................................... 39
Deklaracja DOCTYPE.............................................................................................. 39
1.5. Nagwek HEAD oglne informacje o stronie ........................................................ 41
Obowizkowy element nagwka HEAD .................................................................... 42
Opcjonalne elementy nagwka HEAD...................................................................... 42
1.6. Sekcja BODY cz gwna dokumentu ............................................................... 47
1.7. Podsumowanie ...................................................................................................... 50

Rozdzia 2. Elementy blokowe w HTML 4.0................................................................................................51


2.1. Nagwki ............................................................................................................... 52
2.2. Podstawowe bloki tekstu ........................................................................................ 53
Podstawowy akapit ................................................................................................ 54
Akapit zachowujcy znaki rozdzielajce.................................................................... 55
Blok cytatu............................................................................................................ 56
Adresy .................................................................................................................. 56
2.3. Listy numerowane, wypunktowane i wcite............................................................... 57
Listy numerowane ................................................................................................. 57
Listy wypunktowane ............................................................................................... 59
Listy definicji ......................................................................................................... 61
2.4. Tabele .................................................................................................................. 62
Podstawowa struktura tabel ................................................................................... 62
Definiowanie wierszy tabeli..................................................................................... 66
Nagwki kolumn i komrki danych.......................................................................... 67
Grupowanie zawartoci tabeli ................................................................................. 70
2.5. Formularze ............................................................................................................ 72
2.6. Pozostae elementy blokowe ................................................................................... 73
2.7. Podsumowanie ...................................................................................................... 75

Spis treci
Rozdzia 3. Elementy tekstowe w HTML 4.0 ............................................................................................. 77
3.1.
3.2.
3.3.
3.4.

Fizyczne style znakw............................................................................................. 77


Logiczne style znakw ............................................................................................ 82
Tworzenie czy hipertekstowych ............................................................................. 84
Umieszczanie ilustracji ........................................................................................... 87
Animowane obrazki GIF .......................................................................................... 87
Element IMG ......................................................................................................... 88
3.5. Mapy obrazu interpretowane po stronie klienta......................................................... 91
3.6. Osadzenie innych obiektw w dokumentach ............................................................. 94
Osadzanie apletw Javy ......................................................................................... 94
Osadzanie plikw w formatach audio, wideo i innych przez moduy rozszerzajce ........ 96
Osadzanie kontrolek ActiveX................................................................................... 97
Wywietlanie ruchomych szyldw ............................................................................ 99
3.7. Sterowanie amaniem tekstu ................................................................................ 100
3.8. Podsumowanie .................................................................................................... 101

Rozdzia 4. Ramki ......................................................................................................................................103


4.1. Szablon dokumentu ramek ................................................................................... 104
4.2. Definiowanie ukadu ramek................................................................................... 105
4.3. Definiowanie zawartoci komrek ramek................................................................ 109
Przykady............................................................................................................. 111
4.4. Odwoywanie si do komrek ramek ...................................................................... 112
Predefiniowane nazwy ramek ................................................................................ 115
4.5. Rozwizywanie najczstszych problemw z ramkami ............................................... 115
Tworzenie zakadek do stron z ramkami................................................................. 116
Drukowanie stron z ramkami ................................................................................ 116
Uaktualnianie wielu ramek rwnoczenie............................................................... 117
Chronienie dokumentu przed umieszczeniem w ramce............................................ 120
Tworzenie pustych komrek.................................................................................. 120
4.6. Ramki wewntrzne ............................................................................................... 121
4.7. Podsumowanie .................................................................................................... 124

Rozdzia 5. Kaskadowe arkusze stylw .................................................................................................125


5.1. Definiowanie regu stylu........................................................................................ 126
5.2. Zewntrzne i lokalne arkusze stylw ...................................................................... 128
Zewntrzne arkusze stylw ................................................................................... 128
Element STYLE i arkusze stylw JavaScript ............................................................ 130
Wewntrzne definicje stylw ................................................................................. 130
5.2. Wskaniki............................................................................................................ 131
Elementy HTML ................................................................................................... 132
Klasy definiowane przez uytkownika..................................................................... 133
Identyfikatory definiowane przez uytkownika ......................................................... 133
Pseudoklasy odsyaczy......................................................................................... 134
5.4. czenie kaskadowe. Reguy pierwszestwa w arkuszach stylw.............................. 135
5.5. Waciwoci kroju pisma....................................................................................... 136
5.6. Waciwoci pierwszego planu i ta ........................................................................ 141
5.7. Waciwoci tekstu .............................................................................................. 143
5.8. Waciwoci prostokta ograniczajcego................................................................ 147
Marginesy ........................................................................................................... 148
Obramowanie ...................................................................................................... 148
Dopenienie......................................................................................................... 150
Tryby wywietlania prostokta ograniczajcego....................................................... 150

Spis treci

5.9. Obrazki i elementy pywajce ................................................................................ 151


5.10. Waciwoci list ................................................................................................. 153
5.11. Standardowe formaty zapisu wartoci.................................................................. 153
Dugoci ............................................................................................................. 154
Kolory................................................................................................................. 154
5.12. Warstwy ............................................................................................................ 155
Definiowanie warstw przez elementy LAYER i ILAYER .............................................. 155
Definiowanie warstw przez arkusze stylw ............................................................. 159
5.13. Podsumowanie .................................................................................................. 162

Cz II Programowanie w jzyku Java

163

Rozdzia 6. Podstawowe informacje o Javie ..........................................................................................165


6.1. Cechy charakterystyczne Javy................................................................................ 166
Java jest jzykiem wsppracujcym z Internetem i aplikacjami sieciowymi ............... 167
Java jest jzykiem przeznaczonym dla rnych platform........................................... 169
Java jest jzykiem atwym do nauczenia ................................................................ 172
Java jest jzykiem obiektowym.............................................................................. 173
Dziki standardowym bibliotekom Java ma wiele zastosowa.................................. 173
6.2. Nieprawdziwe informacje na temat Javy ................................................................. 175
Java jest przeznaczona jedynie do zastosowa sieciowych ...................................... 175
Java jest jzykiem niezalenym od platformy .......................................................... 175
Java jest jzykiem atwym do nauczenia ................................................................ 177
Java jest jzykiem obiektowym.............................................................................. 177
Java jest jzykiem, ktry mona stosowa w kadym projekcie informatycznym ......... 178
6.3. Wersje Javy ......................................................................................................... 178
Ktrej wersji powinno si uywa?......................................................................... 180
Bez wzgldu na to, ktra wersja zostanie wybrana .............................................. 180
6.4. Rozpoczcie pracy................................................................................................ 181
Instalacja Javy..................................................................................................... 182
Instalacja przegldarki obsugujcej Jav............................................................... 183
Zapisanie odsyacza lub instalowanie dokumentacji API Javy ................................... 183
Opcjonalne instalowanie zintegrowanego rodowiska programistycznego.................. 184
Utworzenie i uruchomienie programu..................................................................... 185
6.5. Przykadowe programy Javy ................................................................................... 185
Aplikacja Witaj wiecie ...................................................................................... 186
Argumenty linii polece ........................................................................................ 186
Aplet Witaj wiecie ........................................................................................... 187
Parametry apletu ustalane przez uytkownika......................................................... 188
6.6. Podsumowanie .................................................................................................... 191

Rozdzia 7. Programowanie obiektowe w jzyku Java.........................................................................193


7.1. Zmienne obiektowe .............................................................................................. 194
7.2. Metody ............................................................................................................... 196
7.3. Konstruktory i sowo kluczowe this ..................................................................... 197
Inicjacja statyczna ............................................................................................... 200
7.4. Destruktory ......................................................................................................... 200
7.5. Przecianie ........................................................................................................ 201
7.6. Udostpnianie klas w oddzielnych plikach .............................................................. 204

Spis treci
7.7. Program javadoc .................................................................................................. 209
Znaczniki javadoc ................................................................................................ 210
Argumenty linii polece programu javadoc ............................................................. 213
7.8. Dziedziczenie....................................................................................................... 215
7.9. Interfejsy i klasy abstrakcyjne ............................................................................... 219
7.10. Pakiety, cieki dostpu do klas i archiwa JAR ..................................................... 226
cieka do klas CLASSPATH ............................................................................ 229
7.11. Modyfikatory deklaracji ....................................................................................... 232
Modyfikatory widocznoci ..................................................................................... 232
Inne modyfikatory ................................................................................................ 233
7.12. Podsumowanie .................................................................................................. 235

Rozdzia 8. Podstawowa skadnia jzyka Java.....................................................................................237


8.1. Podstawowe informacje na temat skadni .............................................................. 238
8.2. Podstawowe typy danych ...................................................................................... 239
Konwersja typw prostych .................................................................................... 242
8.3. Operatory, instrukcje warunkowe i ptle................................................................. 242
Operatory matematyczne...................................................................................... 243
Instrukcje warunkowe .......................................................................................... 244
Ptle .................................................................................................................. 249
8.4. Klasa Math ......................................................................................................... 252
Stae .................................................................................................................. 252
Metody oglnego przeznaczenia............................................................................ 252
Metody trygonometryczne ..................................................................................... 254
Klasy BigInteger i BigDecimal ............................................................................... 254
8.5. Wprowadzanie i wywietlanie danych ..................................................................... 256
Wyprowadzanie danych na standardowe urzdzenie wyjciowe ................................ 256
Wyprowadzanie danych na standardowe wyjcie informacji o bdach....................... 258
Odczytywanie danych ze standardowego urzdzenia wejciowego ............................ 258
8.6. Uruchamianie programw zewntrznych ................................................................. 258
8.7. Referencje........................................................................................................... 264
Przekazywanie argumentw w Javie....................................................................... 266
Operator instanceof ............................................................................................. 266
8.8. Cigi tekstowe..................................................................................................... 268
Metody klasy String ............................................................................................. 268
Konstruktory ....................................................................................................... 274
8.9. Tablice................................................................................................................ 274
Dwuetapowa alokacja tablicy ................................................................................ 275
Jednoetapowa alokacja tablicy.............................................................................. 276
Tablice wielowymiarowe ....................................................................................... 277
8.10. Wektory............................................................................................................. 278
Konstruktory ....................................................................................................... 278
Metody ............................................................................................................... 278
8.11. Przykad proste drzewo binarne....................................................................... 280
8.12. Wyjtki .............................................................................................................. 284
Podstawy obsugi wyjtkw................................................................................... 285
Wielokrotne klauzule catch ................................................................................... 287
Klauzula Finally ................................................................................................... 288
Generowanie wyjtkw ......................................................................................... 288
Niesprawdzane wyjtki ......................................................................................... 290
8.13. Podsumowanie .................................................................................................. 290

Spis treci

Rozdzia 9. Aplety i podstawy operacji graficznych..............................................................................291


9.1. Czym s aplety? .................................................................................................. 292
9.2. Budowanie apletu ................................................................................................ 293
Szablony apletw................................................................................................. 293
Szablony HTML.................................................................................................... 294
9.3. Przykadowy aplet................................................................................................. 295
Automatyczne odwieanie wygldu okna .............................................................. 296
Odwieanie kodu apletu podczas prac projektowych.............................................. 296
9.4. Poszczeglne etapy pracy apletu ........................................................................... 298
9.5. Inne metody apletw ............................................................................................ 299
9.6. Znacznik HTML APPLET ........................................................................................ 304
9.7. Odczyt parametrw apletu .................................................................................... 306
Przykad odczytu parametrw apletu ...................................................................... 307
9.8. Znacznik HTML OBJECT ........................................................................................ 309
9.9. Rozszerzenie Javy ................................................................................................ 311
9.10. Aplikacje graficzne ............................................................................................. 313
9.11. Operacje graficzne ............................................................................................. 314
Rysowanie .......................................................................................................... 315
Kolory i czcionki................................................................................................... 317
Tryby krelenia .................................................................................................... 318
Wsprzdne i obszary obcinania .......................................................................... 319
9.12. Wywietlanie plikw graficznych .......................................................................... 319
Pobieranie rysunkw okrelonych wzgldnym adresem URL..................................... 320
Pobieranie rysunkw okrelonych bezwzgldnym adresem URL................................ 322
Pobieranie rysunkw w aplikacjach Javy................................................................. 323
9.13. Buforowanie plikw graficznych ........................................................................... 325
9.14. Nadzorowanie procesu pobierania rysunkw......................................................... 328
MediaTracker ...................................................................................................... 330
9.15. Podsumowanie .................................................................................................. 334

Rozdzia 10. Java 2D grafika w Java 2.............................................................................................335


10.1. Podstawowe informacje o bibliotece Java 2D ....................................................... 336
Najczciej wykorzystywane metody klasy Graphics2D............................................ 339
10.2. Style krelenia................................................................................................... 342
Klasy ksztatu...................................................................................................... 342
10.3. Style wypenienia ............................................................................................... 346
Klasy wypeniania ................................................................................................ 346
Rysunki jako wzorce wypenie ............................................................................. 349
10.4. Przezroczysto ................................................................................................. 353
10.5. Korzystanie z czcionek lokalnych ......................................................................... 355
10.6. Style krelenia linii............................................................................................. 357
Atrybuty pira ...................................................................................................... 357
10.7. Transformacje wsprzdnych ............................................................................. 362
Pochylenie .......................................................................................................... 365
10.8. Pozostae funkcje biblioteki Java 2D .................................................................... 366
10.9. Podsumowanie .................................................................................................. 367

Rozdzia 11. Obsuga zdarze myszy i klawiatury.................................................................................369


11.1. Niezalene klasy nasuchu zdarze ...................................................................... 370
Rysowanie k ..................................................................................................... 372
11.2. Implementacja interfejsw nasuchu.................................................................... 373

Spis treci
11.3. Obsuga zdarze w klasach wewntrznych ............................................................ 374
11.4. Obsuga zdarze w anonimowych klasach wewntrznych ....................................... 376
11.5. Standardowe interfejsy nasuchu......................................................................... 377
11.6. Za kulisami niskopoziomowe przetwarzanie zdarze ......................................... 382
11.7. Pole tekstowe poprawiajce bdy ....................................................................... 385
11.8. Klasa deski krelarskiej ..................................................................................... 387
Ulepszona deska krelarska................................................................................. 389
11.9. Podsumowanie .................................................................................................. 390

Rozdzia 12. Rozmieszczanie komponentw ...........................................................................................391


12.1. Meneder rozmieszczenia FlowLayout .................................................................. 392
Konstruktory menedera FlowLayout...................................................................... 393
Inne metody menedera FlowLayout ...................................................................... 393
12.2. Meneder rozmieszczenia BorderLayout ............................................................... 394
Konstruktory menedera BorderLayout .................................................................. 396
Inne metody menedera BorderLayout................................................................... 396
12.3. Meneder rozmieszczenia GridLayout................................................................... 397
Konstruktory menedera GridLayout ...................................................................... 397
Inne metody menedera GridLayout....................................................................... 399
12.4. Meneder rozmieszczenia CardLayout.................................................................. 399
Konstruktory menedera CardLayout ..................................................................... 402
Inne metody menedera CardLayout...................................................................... 403
12.5. Meneder rozmieszczenia GridBagLayout ............................................................. 403
Obiekt GridBagConstraints ................................................................................... 404
Przykad .............................................................................................................. 406
Konstruktor menedera GridBagLayout .................................................................. 409
Inne metody menedera GridBagLayout ................................................................. 409
12.6. Meneder rozmieszczenia BoxLayout ................................................................... 410
Konstruktor menedera BoxLayout ........................................................................ 413
Inne metody menedera BoxLayout ....................................................................... 413
12.7. Wyczenie menedera rozmieszczenia ................................................................ 414
12.8. Efektywne wykorzystanie menederw rozmieszczenia .......................................... 415
Wykorzystanie zagniedanych kontenerw ............................................................ 416
Wyczenie menedera rozmieszczenia w pracy z niektrymi kontenerami................. 419
Operowanie woln przestrzeni wok komponentw .............................................. 420
12.9. Podsumowanie .................................................................................................. 423

Rozdzia 13. Komponenty AWT.................................................................................................................425


13.1. Klasa Canvas .................................................................................................... 426
Powoywanie i korzystanie z obiektu Canvas........................................................... 427
Przykad komponent Kolo ................................................................................. 428
13.2. Klasa Component .............................................................................................. 430
13.3. Lekkie komponenty jzyka Java 1.1..................................................................... 436
13.4. Klasa Panel....................................................................................................... 438
Domylny meneder rozmieszczenia FlowLayout................................................. 438
Tworzenie i posugiwanie si obiektem Panel ......................................................... 439
Przykad zastosowanie obiektu Panel do grupowania komponentw..................... 439
13.5. Klasa Container ................................................................................................. 441
13.6. Klasa Applet...................................................................................................... 443
13.7. Klasa ScrollPane ............................................................................................... 443
Tworzenie i posugiwanie si obiektem ScrollPane.................................................. 443
Przykad obiekt ScrollPane zawierajcy panel o stu przyciskach........................... 443

Spis treci

13.8. Klasa Frame ...................................................................................................... 444


Domylny meneder rozmieszczenia BorderLayout ............................................. 445
Korzystanie z obiektu Frame ................................................................................. 445
Przykady wykorzystania ramek.............................................................................. 446
Zamykalna ramka ................................................................................................ 447
Menu.................................................................................................................. 448
Inne przydatne metody klasy Frame....................................................................... 450
13.9. Serializowanie okien........................................................................................... 451
Zapis okna na dysku............................................................................................ 451
Odczyt okna z dysku ............................................................................................ 452
Przykad zapisywana ramka .............................................................................. 452
13.10. Klasa Dialog.................................................................................................... 455
Tworzenie i posugiwanie si obiektami Dialog ....................................................... 455
Przykad potwierdzenie zamknicia okna ........................................................... 455
13.11. Klasa FileDialog............................................................................................... 457
Przykad wywietlanie zawartoci plikw w polu tekstowym ................................. 457
13.12. Klasa Window.................................................................................................. 459
Domylny meneder rozmieszczenia BorderLayout ............................................. 460
Tworzenie i posugiwanie si obiektem Window ...................................................... 460
13.13. Obsuga zdarze kontrolek GUI.......................................................................... 461
Rozproszone przetwarzanie zdarze ...................................................................... 462
Scentralizowane przetwarzanie zdarze ................................................................. 463
13.14. Klasa Button ................................................................................................... 465
Konstruktory ....................................................................................................... 465
Przykad aplet z trzema przyciskami .................................................................. 465
Inne metody klasy Button ..................................................................................... 466
Obsuga zdarze przyciskw ................................................................................. 467
13.15. Klasa Checkbox ............................................................................................... 469
Konstruktory ....................................................................................................... 470
Przykad zaznaczone pola wyboru...................................................................... 470
Inne metody klasy Checkbox ................................................................................ 471
Obsuga zdarze obiektu Checkbox ....................................................................... 472
13.16. Grupy pl wyboru (przyciski opcji) ...................................................................... 472
Konstruktory ....................................................................................................... 473
Przykad pola wyboru a przyciski opcji................................................................ 473
Inne metody klas CheckboxGroup i Checkbox ........................................................ 474
Obsuga zdarze obiektu CheckboxGroup .............................................................. 474
13.17 Klasa Choice .................................................................................................... 475
Konstruktor......................................................................................................... 475
Przykad zastosowania list rozwijanych .................................................................. 475
Inne metody klasy Choice..................................................................................... 476
Obsuga zdarze obiektu Choice ........................................................................... 477
13.18. Klasa List........................................................................................................ 478
Konstruktory ....................................................................................................... 479
Przykad listy pojedynczego i wielokrotnego wyboru ............................................ 479
Inne metody klasy List ......................................................................................... 480
Obsuga zdarze obiektu List ................................................................................ 482
13.19. Klasa TextField ................................................................................................ 486
Konstruktory ....................................................................................................... 487
Przykad tworzenie obiektw TextField ............................................................... 487
Inne metody klasy TextField.................................................................................. 488
Obsuga zdarze obiektu TextField ........................................................................ 490

10

Spis treci
13.20. Klasa TextArea ................................................................................................ 491
Konstruktory ....................................................................................................... 491
Przykad puste i wypenione obszary tekstowe ................................................... 492
Inne metody klasy TextArea .................................................................................. 492
Obsuga zdarze obiektu TextArea......................................................................... 493
13.21. Klasa Label ..................................................................................................... 493
Konstruktory ....................................................................................................... 494
Przykad cztery rne etykiety ........................................................................... 494
Inne metody klasy Label....................................................................................... 495
Obsuga zdarze obiektu Label ............................................................................. 496
13.22. Paski przewijania i suwaki ................................................................................ 497
Konstruktory ....................................................................................................... 497
Przykad rnorodne paski kontrolki suwakw .................................................... 498
Inne metody klasy Scrollbar.................................................................................. 499
Obsuga zdarze obiektu Scrollbar ........................................................................ 501
13.23. Menu kontekstowe........................................................................................... 503
Konstruktory ....................................................................................................... 503
Przykad menu kontekstowe apletu ................................................................... 503
Inne metody klasy PopupMenu ............................................................................. 505
Obsuga zdarze obiektu PopupMenu .................................................................... 505
13.24. Podsumowanie ................................................................................................ 506

Rozdzia 14. Podstawy Swing..................................................................................................................507


14.1. Podstawy Swing ................................................................................................. 508
Rnice pomidzy technologiami Swing i AWT ........................................................ 508
14.2. Komponent JApplet ............................................................................................ 515
14.3. Komponent JFrame ............................................................................................ 517
14.4. Komponent JLabel ............................................................................................. 518
Nowe funkcje wywietlanie grafiki, obramowania i treci HTML ........................... 519
Konstruktory klasy JLabel..................................................................................... 520
Najczciej wykorzystywane metody klasy JLabel.................................................... 520
14.5. Komponent JButton............................................................................................ 522
Nowe elementy ikony, formatowanie, mnemonika .............................................. 523
Kod HTML w opisie przycisku................................................................................ 524
Konstruktory klasy JButton ................................................................................... 524
Najczciej wykorzystywane metody klasy JButton (AbstractButton) ......................... 524
14.6. Komponent JPanel ............................................................................................. 526
Konstruktory klasy JPanel..................................................................................... 527
Nowe elementy obramowania........................................................................... 527
Najczciej wykorzystywane metody klasy BorderFactory ......................................... 528
14.7. Komponent JSlider............................................................................................. 530
Nowe elementy znaczniki przesunicia i opisy.................................................... 531
Konstruktory klasy JSlider .................................................................................... 531
Najczciej wykorzystywane metody klasy JSlider ................................................... 532
14.8. Komponent JColorChooser.................................................................................. 534
Konstruktory klasy JColorChooser ......................................................................... 535
Najczciej wykorzystywane metody klasy JColorChooser ........................................ 535
14.9. Komponent JInternalFrame ................................................................................. 537
Konstruktory klasy JInternalFrame......................................................................... 538
Najczciej wykorzystywane metody klasy JInternalFrame........................................ 538
14.10. Komponent JOptionPane .................................................................................. 541
Najczciej wykorzystywane metody klasy JOptionPane........................................... 541

Spis treci

11

14.11. Komponent JToolBar ........................................................................................ 545


Konstruktory klasy JToolBar.................................................................................. 546
Najczciej wykorzystywane metody klasy JToolBar ................................................ 546
14.12 Komponent JEditorPane .................................................................................... 550
Podanie za odsyaczami .................................................................................... 551
Konstruktory klasy JEditorPane ............................................................................. 552
Najczciej wykorzystywane metody klasy JEditorPane............................................ 552
Implementacja prostej przegldarki internetowej .................................................... 553
Obsuga kodu HTML i pakiet JavaHelp ................................................................... 556
14.13. Inne komponenty Swing.................................................................................... 556
Komponent JCheckBox......................................................................................... 557
Komponent JRadioButton ..................................................................................... 558
Komponent JTextField .......................................................................................... 559
Komponent JTextArea .......................................................................................... 560
Komponent JFileChooser...................................................................................... 560
14.14. Podsumowanie ................................................................................................ 561

Rozdzia 15. Swing dla zaawansowanych ..............................................................................................563


15.1. Wykorzystanie niestandardowych modeli danych i wywietlaczy.............................. 564
15.2. JList ................................................................................................................. 565
Kontrolka JList ze staym zestawem opcji .............................................................. 565
Kontrolka JList ze zmiennym zestawem opcji ......................................................... 570
Kontrolka JList z niestandardowym modelem danych .............................................. 572
Kontrolka JList z niestandardowym wywietlaczem ................................................. 577
15.3. JTree ................................................................................................................ 581
Proste drzewo JTree............................................................................................. 581
Obsuga zdarze JTree ......................................................................................... 585
Niestandardowe modele danych i dynamiczne drzewa............................................. 587
Zastpowanie ikon dla wierzchokw drzewa .......................................................... 590
15.4. JTable ............................................................................................................... 592
Prosta tabela JTable ............................................................................................ 592
Modele danych tabeli........................................................................................... 596
Wywietlacze komrek tabeli ................................................................................ 601
Obsuga zdarze tabeli......................................................................................... 603
15.5. Drukowanie komponentw Swing ........................................................................ 606
Podstawowe zasady drukowania ........................................................................... 607
Rola podwjnego buforowania .............................................................................. 609
Oglna procedura drukowania komponentw ......................................................... 609
Drukowanie w JDK 1.3 ......................................................................................... 614
15.6. Wielowtkowo w Swing.................................................................................... 615
Metody klasy SwingUtilities .................................................................................. 618
15.7. Podsumowanie .................................................................................................. 620

Rozdzia 16. Programowanie rwnolege z wykorzystaniem wielowtkowoci................................621


16.1. Uruchamianie wtkw ........................................................................................ 622
Metoda 1 umieszczenie kodu w odrbnym obiekcie wtku .................................. 623
Metoda 2 umieszczenie kodu w klasie sterujcej,
implementujcej interfejs Runnable ................................................................. 625
16.2. Sytuacje wycigu................................................................................................ 627
16.3. Synchronizacja................................................................................................... 630
Synchronizacja sekcji kodu ................................................................................... 630
Synchronizacja caej metody ................................................................................. 631
Powszechny bd przy synchronizacji ..................................................................... 631

12

Spis treci
16.4. Tworzenie metod wielowtkowych........................................................................ 633
16.5. Metody klasy Thread .......................................................................................... 638
Konstruktory ....................................................................................................... 638
Stae .................................................................................................................. 639
Metody ............................................................................................................... 640
Zatrzymywanie wtku ........................................................................................... 644
16.6. Grupy wtkw .................................................................................................... 646
Konstruktory ....................................................................................................... 646
Metody ............................................................................................................... 647
16.7. Wielowtkowa grafika i podwjne buforowanie...................................................... 648
Odrysowywanie wszystkiego w metodzie paint........................................................ 649
Zaimplementowanie elementw dynamicznych jako odrbnego komponentu............. 652
Stworzenie odrbnych procedur bezporednio zajmujcych si rysowaniem .............. 653
Nadpisanie metody update i spowodowanie,
aby paint wykonywao przyrostowe uaktualnianie............................................... 655
Wykorzystanie podwjnego buforowania ................................................................ 659
16.8. Animowanie obrazkw ........................................................................................ 664
16.9. Czasomierze...................................................................................................... 668
Konstruktor......................................................................................................... 671
Inne metody ........................................................................................................ 671
16.10. Podsumowanie ................................................................................................ 673

Rozdzia 17. Programowanie aplikacji sieciowych ...............................................................................675


17.1. Implementacja klienta ........................................................................................ 676
Przykad oglny klient sieciowy ......................................................................... 679
Rezultat poczenie z serwerem FTP ................................................................. 681
17.2. Analiza skadniowa acuchw za pomoc klasy StringTokenizer ............................ 682
Klasa StringTokenizer .......................................................................................... 682
Konstruktory ....................................................................................................... 682
Metody ............................................................................................................... 683
Przykad interaktywny analizator skadniowy....................................................... 683
17.3. Przykad klient sprawdzajcy poprawno adresw poczty elektronicznej ............ 684
17.4. Przykad klient sieciowy pobierajcy dokumenty WWW ...................................... 687
Klasa pobierajca dokument wskazany przez adres URI na podanym serwerze ......... 688
Klasa pobierajca dokument wskazany przez adres URL ......................................... 689
Rezultat wykonania programu CzytnikUrl ................................................................ 690
17.5. Klasa URL ......................................................................................................... 691
Pobieranie dokumentw za pomoc klasy URL ....................................................... 691
Inne przydatne metody klasy URL.......................................................................... 693
17.6. Klient WWW interaktywna komunikacja z serwerem WWW ................................. 694
17.7. Implementacja serwera ...................................................................................... 701
Przykad oglny serwer sieciowy........................................................................ 703
Rezultat obsuga poczenia z przegldarki internetowej ..................................... 706
Poczenie pomidzy programami KlientSieciowy i SerwerSieciowy .......................... 706
17.8. Przykad prosty serwer HTTP ........................................................................... 707
Program WielowatkowySerwerEcho........................................................................ 710
17.9. RMI zdalne wywoywanie metod ...................................................................... 712
Etapy tworzenia aplikacji RMI................................................................................ 713
Prosty przykad .................................................................................................... 714
Praktyczny przykad serwer wykonujcy cakowanie numeryczne .......................... 718
Praktyczny przykad czterech wymaganych klas....................................................... 720

Spis treci

13

Kompilacja i uruchomienie przykadu ..................................................................... 724


Konfiguracja RMI w duych sieciach ...................................................................... 725
Kompilacja i uruchomienie przykadu ..................................................................... 728
Przykad apletu RMI ............................................................................................. 730
17.10. Podsumowanie ................................................................................................ 732

Cze III Programowanie aplikacji dziaajcych po stronie serwera

735

Rozdzia 18. Formularze w jzyku HTML................................................................................................737


18.1. Sposb przesyania danych w jzyku HTML .......................................................... 738
18.2. Znacznik FORM.................................................................................................. 741
18.3. Elementy tekstowe............................................................................................. 745
Pola edycyjne ...................................................................................................... 746
Pola edycyjne do wprowadzania hase ................................................................... 747
Obszary tekstowe ................................................................................................ 748
18.4. Przyciski............................................................................................................ 750
Przyciski typu Submit ........................................................................................... 750
Przyciski typu Reset ............................................................................................. 753
Przyciski wykorzystywane przez kod JavaScript ....................................................... 754
18.5. Pola wyboru oraz przeczniki .............................................................................. 755
Pola wyboru ........................................................................................................ 755
Przeczniki ......................................................................................................... 756
18.6 Listy rozwijane oraz zwyke................................................................................... 757
18.7. Wysyanie plikw do serwera............................................................................... 760
18.8. Mapy obrazowe po stronie serwera...................................................................... 762
IMAGE standardowe mapy obrazowe po stronie serwera..................................... 762
ISMAP alternatywne mapy obrazowe po stronie serwera ..................................... 764
18.9. Pola ukryte ........................................................................................................ 766
18.10. Elementy grupujce.......................................................................................... 766
18.11. Kolejno tabulacji........................................................................................... 768
18.12. Podsumowanie ................................................................................................ 769

Rozdzia 19. Programy w jzyku Java po stronie serwera serwlety............................................771


19.1. Przewaga serwerw nad tradycyjnymi programami CGI .......................................... 773
Wydajno .......................................................................................................... 773
Wygoda............................................................................................................... 773
Due moliwoci .................................................................................................. 773
Przenono ....................................................................................................... 774
Bezpieczestwo................................................................................................... 774
Niski koszt .......................................................................................................... 774
19.2. Instalacja oraz konfiguracja serwera .................................................................... 775
Pobieranie oprogramowania obsugujcego serwlety oraz JSP.................................. 775
Dokumentacja API serwletw oraz stron JSP .......................................................... 776
Okrelanie klas wykorzystywanych przez kompilator Javy......................................... 777
Umieszczanie klas w pakietach............................................................................. 777
Konfiguracja serwera ........................................................................................... 777
Kompilacja oraz instalacja serwletw .................................................................... 778
Wywoywanie serwletw........................................................................................ 779
19.3. Podstawowa struktura serwletu........................................................................... 779
Serwlet tworzcy prosty tekst ............................................................................... 780
Serwlet tworzcy kod HTML .................................................................................. 781
Proste narzdzia do tworzenia dokumentw HTML.................................................. 783

14

Spis treci
19.4. Czas ycia serwletu............................................................................................ 785
Metoda init ......................................................................................................... 785
Metoda service ................................................................................................... 786
Metody doGet, doPost oraz doXxx ......................................................................... 787
Interfejs SingleThreadModel ................................................................................. 787
Metoda destroy ................................................................................................... 788
19.5. Przykad wykorzystania parametrw inicjujcych.................................................... 788
19.6. danie klienta dostp do danych formularza .................................................. 791
Odczytywanie danych formularza w programach CGI................................................ 791
Odczytywanie danych formularza w serwletach ....................................................... 791
Przykad odczytywanie wartoci trzech parametrw............................................. 792
Filtrowanie danych zapytania ................................................................................ 794
19.7. danie klienta nagwki dania HTTP ........................................................... 796
Odczytywanie nagwkw dania w serwletach...................................................... 796
Przykad tworzenie tabeli zawierajcej wszystkie nagwki dania....................... 798
Nagwki dania protokou HTTP 1.1.................................................................... 800
Wysyanie skompresowanych stron WWW .............................................................. 803
19.8. Odpowiedniki standardowych zmiennych CGI w przypadku serwletw...................... 805
19.9. Odpowied serwera kody stanu HTTP .............................................................. 808
Okrelanie kodw stanu....................................................................................... 808
Kody stanu protokou HTTP 1.1. ........................................................................... 810
Interfejs uytkownika dla rnych wyszukiwarek internetowych................................. 815
19.10. Odpowied serwera nagwki odpowiedzi HTTP............................................... 819
Ustawianie nagwkw odpowiedzi w serwletach .................................................... 819
Nagwki odpowiedzi protokou HTTP 1.1............................................................... 820
Trway stan serwletu oraz automatyczne odwieanie stron..................................... 826
19.11. Cookies .......................................................................................................... 834
Korzyci wynikajce ze stosowania cookies ........................................................... 835
Niektre problemy z plikami cookies ..................................................................... 836
Interfejs programistyczny API obsugi plikw Cookie w serwletach ............................ 837
Przykad ustawiania oraz odczytywania cookies ...................................................... 840
Proste narzdzia do obsugi cookies...................................................................... 844
Odszukiwanie cookies o okrelonych nazwach ....................................................... 844
Tworzenie dugotrwaych cookies........................................................................... 845
19.12. ledzenie sesji ................................................................................................ 846
Konieczno ledzenia sesji ................................................................................. 846
Interfejs API sucy do ledzenia sesji.................................................................. 848
Koczenie sesji ................................................................................................... 851
Serwlet ukazujcy licznik odwiedzin ....................................................................... 852
19.13. Podsumowanie ................................................................................................ 854

Rozdzia 20. Technologia JavaServer Pages ........................................................................................855


20.1. Podstawy technologii JSP ................................................................................... 855
20.2. Korzyci wynikajce ze stosowania technologii JSP ............................................... 857
Porwnanie z technologi Active Server Pages (ASP) oraz ColdFusion ...................... 857
Porwnanie z technologi PHP .............................................................................. 857
Porwnanie z serwletami...................................................................................... 858
Porwnanie z technologi Server-Side Includes (SSI) .............................................. 858
Porwnanie z jzykiem JavaScript ......................................................................... 858
20.3. Elementy skryptowe JSP ..................................................................................... 859
Wyraenia ........................................................................................................... 859
Skryptlety............................................................................................................ 863

Spis treci

15

Deklaracje .......................................................................................................... 865


Zmienne zdefiniowane ......................................................................................... 867
20.4. Dyrektywa JSP o nazwie page.............................................................................. 868
Atrybut import ..................................................................................................... 869
Atrybut contentType ............................................................................................. 871
Atrybut isThreadSafe............................................................................................ 872
Atrybut session ................................................................................................... 873
Atrybut buffer ...................................................................................................... 874
Atrybut autoflush ................................................................................................. 874
Atrybut extends ................................................................................................... 874
Atrybut info ......................................................................................................... 874
Atrybut errorPage................................................................................................. 875
Atrybut isErrorPage .............................................................................................. 875
Atrybut language.................................................................................................. 875
Skadnia dyrektyw w postaci zgodnej z XML ........................................................... 875
20.5. Doczanie apletw oraz plikw w dokumentach JSP............................................. 876
Dyrektywa include doczanie plikw w czasie przeksztacania strony
do postaci serwletu ........................................................................................ 876
Doczanie plikw w trakcie obsugi dania .......................................................... 879
Doczanie apletw.............................................................................................. 880
Znacznik jsp:fallback............................................................................................ 884
20.6. Wykorzystywanie w stronach JSP komponentw JavaBeans ................................... 888
Prosty przykad wykorzystania klasy ziarna ............................................................. 889
Prosty przykad ustawiania waciwoci ziarna........................................................ 891
Modyfikacja waciwoci ziarna ............................................................................. 893
Wspdzielenie ziaren .......................................................................................... 899
20.7. Definiowanie wasnych znacznikw JSP................................................................ 902
Komponenty tworzce bibliotek znacznikw.......................................................... 903
Definiowanie prostego znacznika .......................................................................... 906
Przyporzdkowanie znacznikom atrybutw.............................................................. 910
Atrybuty znacznikw plik deskryptora biblioteki znacznikw ................................. 911
Doczanie zawartoci znacznika........................................................................... 913
Opcjonalne doczanie zawartoci znacznika .......................................................... 917
Modyfikacja zawartoci znacznika ......................................................................... 920
Znaczniki zagniedone ........................................................................................ 926
20.8. Integrowanie serwletw ze stronami JSP .............................................................. 932
Przekazywanie da ........................................................................................... 934
Przykad internetowe biuro podry ................................................................... 937
Przekazywanie da ze stron JSP ........................................................................ 943
20.9. Podsumowanie .................................................................................................. 944

Rozdzia 21. Wykorzystywanie apletw w charakterze interfejsu programw


dziaajcych po stronie serwera...........................................................................................................945
21.1. Wysyanie danych przy uyciu metody GET i wywietlanie wynikowej strony.............. 946
21.2. Interfejs uytkownika programu wyszukujcego informacje
w wielu rnych wyszukiwarkach internetowych................................................. 947
21.3. Wykorzystywanie metody GET oraz przetwarzanie wynikw
w sposb bezporedni (tunelowanie HTTP)....................................................... 951
Odczytywanie danych binarnych oraz danych tekstowych ......................................... 952
Odczytywanie struktur danych zachowanych przy uyciu serializacji .......................... 953
21.4. Przegldarka da wysyanych do serwera, uywajca serializacji obiektw
oraz tunelowania HTTP ................................................................................... 955

16

Spis treci
21.5. Wysyanie danych przy uyciu metody POST
i przetwarzanie wynikw wewntrz apletu (tunelowanie HTTP) ............................ 962
21.6. Aplet wysyajcy dane przy uyciu metody POST.................................................... 965
21.7. Pomijanie serwera HTTP podczas komunikacji z programem po stronie serwera ...... 969
21.8. Podsumowanie .................................................................................................. 969

Rozdzia 22. Technologia JDBC ................................................................................................................971


22.1. Podstawowe czynnoci konieczne do wykonania w celu zastosowania JDBC ........... 972
Zaadowanie sterownika JDBC .............................................................................. 972
Okrelanie adresu URL sucego do nawizania poczenia ................................... 973
Ustanawianie poczenia z baz danych ................................................................ 974
Tworzenie instrukcji SQL ...................................................................................... 974
Wykonywanie zapytania ........................................................................................ 975
Przetwarzanie wynikw zapytania .......................................................................... 975
Zamykanie poczenia.......................................................................................... 976
22.2. Prosty przykad wykorzystujcy JDBC.................................................................... 976
22.3. Kilka narzdzi JDBC ........................................................................................... 981
22.4. Stosowanie utworzonych narzdzi JDBC ............................................................... 989
22.5. Interaktywna przegldarka zapyta ...................................................................... 993
Kod przegldarki zapyta...................................................................................... 995
22.6. Zapytania prekompilowane ................................................................................. 999
22.7. Podsumowanie ................................................................................................ 1003

Rozdzia 23. Przetwarzanie dokumentw XML w jzyku Java......................................................... 1005


23.1. Analiza dokumentw XML przy uyciu modelu DOM (poziom 2)............................. 1006
Instalacja oraz konfiguracja ................................................................................ 1007
Analiza dokumentu ............................................................................................ 1008
23.2. Przykad wykorzystania modelu DOM wywietlenie dokumentu XML
w postaci obiektu JTree................................................................................ 1009
23.3. Przetwarzanie dokumentw XML za pomoc interfejsu SAX 2.0............................ 1020
Instalacja oraz konfiguracja ................................................................................ 1020
Analiza dokumentu ............................................................................................ 1021
23.4. Pierwszy przykad uycia interfejsu SAX wywietlanie struktury dokumentu XML .... 1023
23.5. Drugi przykad uycia interfejsu SAX zliczanie zamwie ksiek ...................... 1029
23.6. Przeksztacanie dokumentu XML za pomoc transformacji XSLT .......................... 1033
Instalacja oraz konfiguracja ................................................................................ 1034
Transformacja ................................................................................................... 1035
23.7. Pierwszy przykad XSLT edytor dokumentw XSLT ........................................... 1039
23.8. Drugi przykad XSLT wasny zdefiniowany znacznik JSP.................................... 1047
23.9. Podsumowanie ................................................................................................ 1054

Cz IV JavaScript

1055

Rozdzia 24. JavaScript wzbogacanie stron WWW o elementy dynamiczne.............................. 1057


24.1. Dynamiczne generowanie kodu HTML ................................................................ 1059
Zachowanie zgodnoci z wieloma przegldarkami ................................................. 1062
24.2. Monitorowanie zdarze uytkownika .................................................................. 1064
24.3. Poznawanie skadni JavaScript.......................................................................... 1065
Dynamiczne okrelanie typu ............................................................................... 1065
Deklarowanie funkcji.......................................................................................... 1066
Klasy i obiekty................................................................................................... 1067
Tablice ............................................................................................................. 1071

Spis treci

17

24.4. Wykorzystanie JavaScript do przeksztacania stron WWW .................................... 1072


Dostosowanie do rozmiaru okna przegldarki....................................................... 1073
Sprawdzanie, jakie moduy rozszerzajce s dostpne.......................................... 1075
24.5. Wykorzystanie JavaScript do umieszczenia na stronie elementw dynamicznych ... 1077
Dynamiczna zmiana obrazkw............................................................................. 1077
Przemieszczanie warstw ..................................................................................... 1084
24.6. Wykorzystanie JavaScript do sprawdzania poprawnoci formularzy ....................... 1087
Sprawdzanie pojedynczych wartoci .................................................................... 1088
Sprawdzanie wartoci przed odesaniem formularza ............................................. 1090
24.7. Wykorzystanie JavaScript do zapisywania i sprawdzania
znacznikw kontekstu klienta........................................................................ 1094
24.8. Wykorzystanie JavaScript do wspdziaania z ramkami ....................................... 1098
Pokierowanie ramk, aby wywietlia podany URL................................................. 1099
Sprawianie aby ramka bya aktywna .................................................................... 1102
24.9. Wywoywanie Javy z poziomu JavaScript ............................................................. 1102
Bezporednie wywoywanie metod Javy................................................................ 1103
Wykorzystanie apletw do wykonywania operacji dla JavaScript ............................. 1104
Sterowanie apletami przy uyciu JavaScript.......................................................... 1107
24.10. Dostp do obiektw JavaScript z poziomu Javy................................................. 1110
Przykad dopasowanie koloru ta apletu do koloru strony .................................. 1112
Przykad aplet sterujcy wartociami formularza HTML ..................................... 1113
Metody klasy JSObject ....................................................................................... 1122
24.11. Podsumowanie .............................................................................................. 1123

Rozdzia 25. Krtki podrcznik JavaScript ......................................................................................... 1125


25.1. Obiekt Array..................................................................................................... 1125
Konstruktory ..................................................................................................... 1126
Waciwoci ...................................................................................................... 1126
Metody ............................................................................................................. 1126
Zdarzenia.......................................................................................................... 1129
25.2. Obiekt Button .................................................................................................. 1129
Waciwoci ...................................................................................................... 1129
Metody ............................................................................................................. 1129
Zdarzenia.......................................................................................................... 1130
25.3. Obiekt Checkbox.............................................................................................. 1130
Waciwoci ...................................................................................................... 1131
Metody ............................................................................................................. 1131
Zdarzenia.......................................................................................................... 1131
25.4. Obiekt Date ..................................................................................................... 1132
Konstruktory ..................................................................................................... 1132
Waciwoci ...................................................................................................... 1132
Metody ............................................................................................................. 1133
Zdarzenia.......................................................................................................... 1135
25.5. Obiekt Document ............................................................................................. 1135
Waciwoci ...................................................................................................... 1135
Metody ............................................................................................................. 1137
Zdarzenia.......................................................................................................... 1138
25.6. Obiekt Element ................................................................................................ 1138
Waciwoci ...................................................................................................... 1138
Metody ............................................................................................................. 1139
Zdarzenia.......................................................................................................... 1140

18

Spis treci
25.7. Obiekt FileUpload............................................................................................. 1140
Waciwoci ...................................................................................................... 1140
Metody ............................................................................................................. 1141
Zdarzenia.......................................................................................................... 1141
25.8. Obiekt Form..................................................................................................... 1141
Waciwoci ...................................................................................................... 1141
Metody ............................................................................................................. 1142
Zdarzenia.......................................................................................................... 1142
25.9. Obiekt Function ............................................................................................... 1143
Konstruktor....................................................................................................... 1143
Waciwoci ...................................................................................................... 1143
Metody ............................................................................................................. 1144
Zdarzenia.......................................................................................................... 1144
25.10. Obiekt Hidden................................................................................................ 1144
Waciwoci ...................................................................................................... 1144
Metody ............................................................................................................. 1144
Zdarzenia.......................................................................................................... 1145
25.11. Obiekt History................................................................................................ 1145
Waciwoci ...................................................................................................... 1145
Metody ............................................................................................................. 1145
Zdarzenia.......................................................................................................... 1146
25.12. Obiekt Image ................................................................................................. 1146
Konstruktor....................................................................................................... 1146
Waciwoci ...................................................................................................... 1146
Metody ............................................................................................................. 1147
Zdarzenia.......................................................................................................... 1147
25.13. Obiekt JavaObject .......................................................................................... 1148
25.14. Obiekt JavaPackage ....................................................................................... 1148
25.15. Obiekt Layer .................................................................................................. 1148
Konstruktory ..................................................................................................... 1149
Waciwoci ...................................................................................................... 1149
Metody ............................................................................................................. 1150
Zdarzenia.......................................................................................................... 1151
25.16. Obiekt Link.................................................................................................... 1152
Waciwoci ...................................................................................................... 1152
Metody ............................................................................................................. 1153
Zdarzenia.......................................................................................................... 1153
25.17. Obiekt Location ............................................................................................. 1154
Waciwoci ...................................................................................................... 1154
Metody ............................................................................................................. 1155
Zdarzenia.......................................................................................................... 1155
25.18. Obiekt Math .................................................................................................. 1155
Waciwoci ...................................................................................................... 1155
Metody ............................................................................................................. 1156
Zdarzenia.......................................................................................................... 1157
25.19. Obiekt MimeType ........................................................................................... 1158
Waciwoci ...................................................................................................... 1158
Metody ............................................................................................................. 1158
Zdarzenia.......................................................................................................... 1158

Spis treci

19

25.20. Obiekt Navigator ............................................................................................ 1159


Waciwoci ...................................................................................................... 1159
Metody ............................................................................................................. 1161
Zdarzenia.......................................................................................................... 1161
25.21. Obiekt Number .............................................................................................. 1161
Konstruktor....................................................................................................... 1162
Waciwoci ...................................................................................................... 1162
Metody ............................................................................................................. 1162
Zdarzenia.......................................................................................................... 1164
25.22. Obiekt Object................................................................................................. 1164
Konstruktory ..................................................................................................... 1164
Waciwoci ...................................................................................................... 1164
Metody ............................................................................................................. 1165
Zdarzenia.......................................................................................................... 1165
25.23. Obiekt Option ................................................................................................ 1165
Konstruktory ..................................................................................................... 1165
Waciwoci ...................................................................................................... 1166
Metody ............................................................................................................. 1166
Zdarzenia.......................................................................................................... 1166
25.24. Obiekt Password............................................................................................ 1166
Waciwoci ...................................................................................................... 1167
Metody ............................................................................................................. 1167
Zdarzenia.......................................................................................................... 1167
25.25. Obiekt Plugin ................................................................................................. 1168
Waciwoci ...................................................................................................... 1168
Metody ............................................................................................................. 1169
Zdarzenia.......................................................................................................... 1169
25.26. Obiekt Radio ................................................................................................. 1169
Waciwoci ...................................................................................................... 1169
Metody ............................................................................................................. 1170
Zdarzenia.......................................................................................................... 1170
25.27. Obiekt RegExp ............................................................................................... 1170
Konstruktory ..................................................................................................... 1170
Waciwoci ...................................................................................................... 1172
Metody ............................................................................................................. 1173
Zdarzenia.......................................................................................................... 1174
Wzorce specjalne w wyraeniach regularnych ....................................................... 1174
25.28. Obiekt Reset ................................................................................................. 1174
Waciwoci ...................................................................................................... 1174
Metody ............................................................................................................. 1174
Zdarzenia.......................................................................................................... 1176
25.29. Obiekt Screen................................................................................................ 1176
Waciwoci ...................................................................................................... 1177
Metody ............................................................................................................. 1177
Zdarzenia.......................................................................................................... 1177
25.30. Obiekt Select................................................................................................. 1177
Waciwoci ...................................................................................................... 1178
Metody ............................................................................................................. 1179
Zdarzenia.......................................................................................................... 1179

20

Spis treci
25.31. Obiekt String ................................................................................................. 1179
Konstruktor....................................................................................................... 1180
Waciwoci ...................................................................................................... 1180
Metody ............................................................................................................. 1180
Zdarzenia.......................................................................................................... 1184
25.32. Obiekt Submit ............................................................................................... 1184
Waciwoci ...................................................................................................... 1184
Metody ............................................................................................................. 1185
Zdarzenia.......................................................................................................... 1185
25.33. Obiekt Text.................................................................................................... 1186
Waciwoci ...................................................................................................... 1186
Metody ............................................................................................................. 1186
Zdarzenia.......................................................................................................... 1187
25.34. Obiekt Textarea ............................................................................................. 1187
Waciwoci ...................................................................................................... 1187
Metody ............................................................................................................. 1188
Zdarzenia.......................................................................................................... 1188
25.35. Obiekt Window............................................................................................... 1189
Waciwoci ...................................................................................................... 1189
Metody ............................................................................................................. 1192
Zdarzenia.......................................................................................................... 1196
Przykad uycia metody open .............................................................................. 1198
25.36. Podsumowanie .............................................................................................. 1200

Dodatki

1201

Skorowidz .............................................................................................................................................. 1203

Wykorzystywanie apletw
w charakterze interfejsu
programw dziaajcych
po stronie serwera
W tym rozdziale:
n

Wysyanie danych przy uyciu metody GET i wywietlanie wynikw


w przegldarce

Wysyanie danych przy uyciu metody GET i przetwarzanie wynikw wewntrz


apletu (tunelowanie HTTP)

Wykorzystanie serializacji obiektw do wymiany struktur danych wysokiego


poziomu pomidzy apletami a serwletami

Wysyanie danych przy uyciu metody POST i przetwarzanie wynikw wewntrz


apletu (tunelowanie HTTP)

Pomijanie serwera HTTP podczas komunikacji z programem po stronie serwera

Omwione w rozdziale 18. formularze HTTP stanowi prosty, lecz ograniczony sposb
pobierania danych wejciowych od uytkownika i przekazywania ich do serwletw lub
programw CGI. Niekiedy jednak wymagane jest zastosowanie bardziej skomplikowanego
interfejsu uytkownika. Aplety umoliwiaj wiksz kontrol na rozmiarem, kolorem oraz
czcionk elementw graficznego interfejsu uytkownika, jak rwnie udostpniaj wicej
moliwoci obsugiwanych przez dostarczone obiekty (paski postpu, przewijania, rysowanie linii, okna modalne itp.), pozwalaj ledzi zdarzenia myszy oraz klawiatury, obsugiwa definiowane wasne formularze (przecigane ikony, klawiatury do wybierania numerw itp.), a take pozwalaj wysa danie pochodzce od jednego uytkownika do wielu
programw dziaajcych po stronie serwera. Te dodatkowe moliwoci maj jednak swoj

946

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


cen, poniewa stworzenie interfejsu uytkownika w jzyku Java pociga za sob wicej
wysiku, ni ma to miejsce w przypadku formularzy HTML, szczeglnie wtedy, gdy interfejs zawiera tekst formatowany. Dlatego te wybr pomidzy formularzami HTML a apletami zaley od rodzaju tworzonej aplikacji.
W formularzach HTML dania typu  oraz  obsugiwane s w prawie ten sam sposb.
Wszystkie elementy interfejsu uytkownika suce do wprowadzania danych s identyczne.
Zmieniana jest jedynie warto atrybutu  znacznika
 . Natomiast w przypadku
apletw istniej trzy rne podejcia do problemu. Pierwsze z nich, opisane w podrozdziale
21.1, polega na naladowaniu przez aplety formularzy HTML uywajcych metody , co
powoduje wysanie danych do serwera wanie przy uyciu tej metody i wywietlenie wynikw w przegldarce. W podrozdziale 21.2, Interfejs uytkownika programu wyszukujcego
informacje w wielu rnych wyszukiwarkach internetowych, przedstawiony zostanie przykad tego rodzaju podejcia. Druga metoda zostanie opisana w podrozdziale 21.3. i polega
na wykorzystaniu apletu wysyajcego dane do serwletu, a nastpnie samodzielnie przetwarzajcego uzyskane wyniki. Przykad prezentujcy zastosowanie tej metody przedstawiony
bdzie w podrozdziale 21.4, Przegldarka da wysyanych do serwera uywajca serializacji obiektw oraz tunelowania HTTP. Trzecie podejcie, opisane w podrozdziale 21.5,
polega na wykorzystaniu apletu wysyajcego dane do serwletu przy uyciu metody POST,
a nastpnie samodzielnie przetwarzajcego uzyskane wyniki. Przykad tej metody zamieszczony jest w podrozdziale 21.6, Aplet wysyajcy dane przy uyciu metody POST. W podrozdziale 21.7. przedstawiony zostanie sposb cakowitego pominicia przez aplet serwera
HTTP i bezporedniej komunikacji z programem dziaajcym na tym samym komputerze,
z ktrego pobrany zosta aplet.
W rozdziale tym zaoono, e Czytelnik w stopniu podstawowym zna sposoby tworzenia
podstawowych apletw (rozdzia 9.) i dlatego skoncentrowano si jedynie na technikach
umoliwiajcych komunikacj apletw z programami dziaajcymi po stronie serwera.

21.1. Wysyanie danych przy uyciu metody GET


i wywietlanie wynikowej strony
Metoda   nakazuje przegldarce wywietlenie dokumentu umieszczonego pod
okrelonym adresem URL. Dziki doczeniu do adresu URL programu danych, umieszczonych po znaku zapytania (?), moliwe jest przesanie ich przy uyciu metody  do
serwletu lub innego programu CGI. Dziki temu w celu wysania danych z apletu konieczne
jest jedynie doczenie ich do acucha znakowego, sucego do tworzenia adresu URL,
a nastpnie w normalny sposb utworzenie obiektu URL i wywoanie metody  
. Poniej przedstawiony zosta prosty szablon, pozwalajcy na zastosowanie tej metody
w apletach. Zakada on, e    zawiera acuch znakowy, reprezentujcy adres
URL programu po stronie serwera, za zmienna   zawiera informacje, ktre maj
zosta wysane wraz z daniem.


    
     
  ! "# $% 
  
&% %$' (
)"% * ###&

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

947

Kiedy dane przesyane s przez przegldark, zostan zakodowane przy uyciu metody
URL encode, co oznacza, e spacje konwertowane s na znaki plusa (!), za wszystkie nie
alfanumeryczne znaki zmieniane s na znak procenta ("), po ktrym wystpuj dwie cyfry
szesnastkowe, okrelajce kod znaku w uywanym zestawie. Zostao to dokadnie opisane
w podrozdziale 18.2, Znacznik FORM. W poprzednim przykadzie zaoono, e acuch
znakowy   jest ju zakodowany poprawnie. W przeciwnym wypadku wystpiby
bd dziaania programu. W JDK 1.1 oraz w wersjach pniejszych wystpuje specjalna
klasa o nazwie  , posiadajca zdefiniowan statyczn metod o nazwie ,
ktrej wywoanie powoduje wykonanie omwionego kodowania. Jeli wic aplet komunikuje si z programem po stronie serwera, ktry normalnie otrzymywaby dane  z formularzy HTML, aplet musi zakodowa kad przesyan warto, lecz musi rwnie uy
znaku rwnoci (#) pomidzy kad nazw zmiennej a stowarzyszon z ni wartoci, jak
rwnie znaku ($) w celu oddzielenia od siebie kadej takiej pary. Dlatego te nie mona
wykorzysta wspomnianej metody  %&  ' dla caego acucha
znakowego zawierajcego dane (wwczas zostayby zakodowane rwnie te znaki specjalne przyp. tum.), lecz w zamian selektywnie zakodowa kad cz pary. Czynno ta
moe zosta wykonana na przykad w poniszy sposb:
+*    
  ,)%
# %
  %,-
  .)%
# %
  %.-
###
  /)%
# %
  %/


    
     
  ! "# $% 
  
&% %$' (
)"% * ###&

Cay przykad zostanie przedstawiony w kolejnym podrozdziale.

21.2. Interfejs uytkownika programu


wyszukujcego informacje w wielu rnych
wyszukiwarkach internetowych
Na listingu 21.1 przedstawiony zosta aplet tworzcy pole tekstowe, suce do pobierania
danych wejciowych od uytkownika. Po zatwierdzeniu danych, aplet koduje je uywajc
metody URL-encode i tworzy trzy rne adresy URL, z doczanymi do nich danymi przesyanymi za pomoc metody . Kady z nich przeznaczony jest dla innej wyszukiwarki
internetowej: Google, Infoseek oraz Lycos. Nastpnie, w celu nakazania przegldarce wywietlenia rezultatw wyszukiwania w trzech rnych obszarach ramki, aplet uywa metody  . Formularze HTML nie mog zosta wykorzystane do wykonania tego rodzaju zadania, poniewa mog one przesya dane jedynie do pojedynczego adresu URL.
Na listingu 21.2 przedstawiona zostaa klasa o nazwie ( )**, wykorzystywana przez aplet do tworzenia okrelonych adresw URL, niezbdnych do przekierowania da do rnych wyszukiwarek internetowych. Jak wspomniano w rozdziale 19., klasa
( )**+ moe by rwnie wykorzystywana przez serwlety. Wyniki dziaania apletu przedstawiaj rysunki 21.2 21.2.

948

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


Na listingu 21.3 zaprezentowany zosta gwny dokument HTML, za na listingu 21.4 dokument HTML wykorzystywany do osadzenia apletu. Zainteresowanych dokadn budow
tych trzech niewielkich plikw HTML, sucych do utworzenia pocztkowej zawartoci
trzech komrek ramki, ukazanych na rysunku 21.1, odsyamy do kodu rdowego umieszczonego w archiwum znajdujcym si po adresem: ftp://ftp.helion.pl/przyklady/serinp.zip.

Listing 21.1. ApletWyszukiwania.java


*0 1 #  # 
*0 1 # #2
*0 1 # # 1 #2
*0 1 # #2
322 
%04% 56* %4 
%07
2  8* 4%0 09%*:9 
 
2 *  04% 
 
 ;)<=0

 >*  >; 7?( > % #
2/ 8* 
   >    4
  4
>*
25*  04% 0*>* >* *  %$

* %$ > %$#


2@:6 879 >A (  B<'*  4  *   :  %
2 A 6* 0
% %$  C#
2D E
2F
 % *8  >* 0
%0*
2> *49>*+ * *   #   *
2G
*%B *7; **% 7
2(=33(#$ *# 3>
3 *#*
2.HH,' B  
 I
23
 *%%  G >* *  " 
 
*   %**   
*1  < "J*
 @  * 
*1  I%* >@ * 
 0 %
 *%1*
**
 I %>
! #$* 
 J J+ *(7J#IK7,L


     >* %*4=


 @  *  < "J*
MH
 @  * #

%**   $* 


 @  * 
%* >@ * 
 0 % IG5 *0
 >*  >
%* >@ * 
 0 %#

%**   $* 


%* >@ * 


 0 %
&
322G A 
 
>%*5*8%* %* >DIE D3IE
29%* > *     > #
23
 *%1*
 %* (
%*)1  1 
+*  * )%
# %
 @  * # < "
   G >* * NO  
    G >* * #* ;  
 
33 **8  A
 BI  ** 7*  9% 5*  * *>:
33 >* >  9 >
0 >P 1 +%*#   9*9 0 80
 9 *  $Q,#
(**H*D  
 # $Q,*


Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...


Rysunek 21.1.
Aplet
SearchApplet
pozwala
uytkownikom
na wprowadzenie
jednego
poszukiwanego
cigu znakw,
wykorzystanego
nastpnie
w trzech rnych
wyszukiwarkach
internetowych

Rysunek 21.2.
Zatwierdzenie
zapytania
powoduje
wywietlenie
obok siebie
wynikw
wyszukiwania,
pochodzcych
z trzech rnych
wyszukiwarek

   G >* * 


   
 N*O
33F + %$+ %
 
33  %*   0 >* > :9%$  %$* 9 %$ >*  >
*  %$#
 %$ 
 #
   * 7,H
+*   >*   *
  ! "# $%  %$7   >*
&% %$' (
)"% * &
&
&
&

Listing 21.2. ParametryWyszukiwania.java


322 A > > 5 04%   : *  >*  %*4
2>   
>> 5  0 >* >*#
2D E
2F
 % *8  >* 0
%0*

949

950

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


2> *49>*+ * *   #   *
2G
*%B *7; **% 7
2(=33(#$ *# 3>
3 *#*
2.HH,' B  
 I
23
 *%%    G >* * 
*1  +*  7
 7 %*>*%G*>
*1    *%   G >* * NO  
 
    G >* *  7
$=33# #%3 %$R7
-7
    G >* * *( >7
$=33*( >##%3<* R7
-$7
    G >* *  % 7
$=33 % # % #%3%*Q*3
 *R 7
- "$* 7
    G >* * $7
$=33#$#%3'<7
-!
&
 *%   G >* * +*  7
+*
 7
+* %*>*%G*>
$* #    
$* #
 
 
$* # %*>*%G*> %*>*%G*>
&
 *%+*
 +* %$+*7
+* *% G*>
 
  %$+*
 %*>*%G*> *% G*>
&
 *%+** /  
   
&
 *%  *%   G >* * NO* ;  
 
   
 
&
&

Listing 21.3. RownolegleWyszukiwania.html


DSK!<T )B<' I?!Q33GU!33<B<'M#HJ  33)/E
DB<'E
DB)E
D<?<)EG*>*:  > %$  C
*  >*  >
*  %$D3<?<)E
D3B)E

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

951

DJ')+)<KG+,.H72E
DJ')+! >  #$ +!K?/;/KE
DJ')+)<!K+27272E
DJ')+! > ; #$ /')   HE
DJ')+! > ?( >#$ /')   ,E
DJ')+! > % #$ /')   .E
D3J')+)<E
D3J')+)<E

Listing 21.4. RamkaApletu.html


DSK!<T )B<' I?!Q33GU!33<B<'M#H<  ** 33)/E
DB<'E
DB)E
D<?<)E >    A94% 
 >* * *( %0*D3<?<)E
D3B)E
DIKTI;!KKGB?<)E
D!)/<)E
D )<!K) G >* * #% G?<BVHHB)?;B<,HHE
DIE< >A
  9%*   4
>* A04% 008>P 1 #D3IE
D3 )<E
D3!)/<)E
D3IKTE
D3B<'E

21.3. Wykorzystywanie metody GET


oraz przetwarzanie wynikw
w sposb bezporedni (tunelowanie HTTP)
W poprzednim przykadzie aplet informowa przegldark o koniecznoci wywietlenia
w okrelonej ramce danych wynikowych pochodzcych z programu dziaajcego po stronie
serwera. Wykorzystywanie przegldarki do wywietlania wynikw jest cakiem rozsdne
podczas korzystania z ju dziaajcych usug, poniewa wikszo programw CGI zostaa
skonfigurowana w celu zwracania wynikw w postaci dokumentw HTML. Tym niemniej,
jeli tworzy si zarwno aplikacj klienta, jak te cz obsugujc proces po stronie serwera, marnotrawstwem wydaje si wysyanie wynikw w postaci caego dokumentu HTML.
W niektrych wypadkach ogromnym udogodnieniem byaby moliwo wysyania danych
do ju dziaajcego apletu. Aplet mgby nastpnie zaprezentowa otrzymane dane w formie wykresu lub w innej dowolnej postaci. Takie podejcie niekiedy jest nazywane tunelowaniem HTTP, poniewa wasny protok uywany do komunikacji osadzony jest wewntrz pakietw HTTP stosowanych podczas przekazywania przez serwery poredniczce
szyfrowania, przekierowywania przez serwer, przekazywania przez zapory sieciowe itp.
Istniej dwie gwne odmiany takiej metody. Obie wykorzystuj klas  ,* w celu
otwarcia strumienia wejciowego przy uyciu danego adresu URL. Rnica tkwi w rodzaju
wykorzystywanego strumienia. Pierwsz moliwoci jest uycie strumienia -../ 

952

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


 lub innego strumienia niskopoziomowego, pozwalajcego na odczytanie danych
binarnych lub danych w postaci kodu ASCII, pochodzcych z dowolnego programu dziaajcego po stronie serwera. Ta metoda zostanie opisana w pierwszym punkcie tego podrozdziau. Druga moliwo polega na wykorzystaniu strumienia 0/  w celu
bezporedniego odczytania wysokopoziomowych struktur danych. Zostanie ona opisana
w drugim punkcie tego podrozdziau. Metoda ta jest moliwa do wykorzystania jedynie
wtedy, gdy program dziaajcy po stronie serwera jest rwnie napisany przy uyciu jzyka
programowania Java.

Odczytywanie danych binarnych oraz danych tekstowych


Aplet moe odczytywa dane przesane przez serwer. W tym celu musi zosta najpierw
utworzony obiekt klasy  ,*, uywajcej adresu URL programu dziaajcego po
stronie serwera. Nastpnie musi doczony zosta do niego strumie klasy -../ 
. W celu zaimplementowania tej metody w aplikacji klienta konieczne jest wykonanie siedmiu gwnych czynnoci, opisanych po kolei poniej. W przedstawionym opisie
pominity zosta kod znajdujcy si po stronie serwera, poniewa zdefiniowany kod klienta
dziaa z dowolnym programem pracujcym na serwerze lub ze statyczn stron WWW.
Zwr uwag, e wiele operacji na strumieniach generuje wyjtek klasy /1 *, dlatego te przedstawione poniej instrukcje musz by umieszczone w bloku +2+ .
1. Utworzenie obiektu URL wskazujcego na domowy serwer apletu

Do konstruktora URL mona przekaza bezwzgldny adres URL (na przykad


w postaci http://serwer/sciezka), jednak, z tego wzgldu, e ograniczenia
spowodowane zabezpieczeniami uniemoliwiaj poczenia wykonywane z apletw
do serwerw innych ni ten, na ktrym s one umieszczone, bardziej sensowne
wydaje si utworzenie adresu URL bazujcego na nazwie serwera, z ktrego zosta
on pobrany.
*  % +  !
I 
+*> *  % + #  % 
+*  *  % + # B 
**  % + #  
+*  >
 3 1 3 * +  

  > 7  77  >
 

2. Utworzenie obiektu URLConnection Metoda  ,*, zdefiniowana


w klasie URL, powoduje zwrcenie obiektu  ,*. Obiekt ten bdzie

nastpnie wykorzystany w celu pobrania strumieni wykorzystywanych do


komunikacji.
! %* % * 
 # ! %*

3. Nakazanie przegldarce, aby nie umieszczaa danych doczonych do adresu

URL w swojej pamici podrcznej Pierwsz czynnoci konieczn do wykonania,


wykorzystujc obiekt  ,* jest wskazanie, aby dane przekazywane
za jego pomoc nie byy nigdy umieszczane przez przegldark w pamici
podrcznej. Tego rodzaju podejcie gwarantuje uzyskanie za kadym razem
najwieszych wynikw.
 % * #  ! %$ ( 

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

953

4. Ustawienie wszystkich podanych nagwkw HTTP Jeli chce si ustawi

nagwki dania HTTP (patrz podrozdzia 19.7.), mona wykorzysta metod


o nazwie  3  .
 % * #  R      >7  %

5. Utworzenie strumienia wejciowego Istnieje szereg odpowiednich strumieni,


lecz najpowszechniej wykorzystywanym jest strumie -.. . Poczenie

z serwerem WWW ustanawiane jest w chwili tworzenia strumienia wejciowego.


I(( 

 * G 0 %* I(( 

 
?+ 
 % * # ?+ 

6. Odczytanie wszystkich wierszy dokumentu Specyfikacja HTTP wymaga

zamknicia przez serwer poczenia po zakoczeniu wysyania dokumentu.


W wypadku zamknicia poczenia, uycie metody o nazwie * powoduje
zwrcenie wartoci 44. Dlatego te naley zwyczajnie odczytywa dane
wejciowe, a do czasu uzyskania wartoci 44.
+**  
$* *   * G 0 %*#
* S
! %**  
&



7. Zamknicie strumienia wejciowego


* G 0 %*#%  

Odczytywanie struktur danych zachowanych przy uyciu serializacji


Przedstawione w poprzednich rozdziaach pomysy prezentoway sposoby wymiany informacji pomidzy apletem a dowolnym programem dziaajcym po stronie serwera lub te ze
statyczn stron WWW. Niemniej jednak, kiedy aplet komunikuje si z serwletem, istnieje
jeszcze lepszy sposb wymiany danych. Zamiast wysyania ich w postaci binarnej lub tekstowej, serwlet moe przesya dowolne struktury danych uywajc w tym celu mechanizmu
serializacji, udostpnianego standardowo przez jzyk Java. Aplet nastpnie moe odczyta
te dane za pomoc jednego wywoania metody 0. Nie wymagana jest w takim
wypadku mudna analiza danych. Poniej przedstawione zostay czynnoci konieczne do
implementacji tunelowania HTTP

Aplikacja dziaajca po stronie klienta


W celu odczytania struktur danych, zachowanych przy uyciu mechanizmu serializacji,
przesyanych przez serwlet, aplet musi wykona siedem poniej przedstawionych czynnoci.
Jedynie czynnoci przedstawione w punktach 5. oraz 6. rni si od tych, wymaganych
podczas odczytywania danych tekstowych opisanych poprzednio. Opis czynnoci zosta
znacznie uproszczony, dziki pominiciu blokw +2+ .
1. Utworzenie obiektu URL wskazujcego na domowy serwer apletu Podobnie jak

poprzednio, poniewa adres URL musi wskazywa na serwer, z ktrego pobrany


zosta aplet, bardziej sensowne jest okrelenie adresu wzgldnego i pozwolenie
na skonstruowanie go w sposb automatyczny.

954

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


*  % +  !
I 
+*> *  % + #  % 
+*  *  % + # B 
**  % + #  
+*  >
 3 1 3 * +  

  > 7  77  >
 

2. Utworzenie obiektu URLConnection Metoda  ,*, zdefiniowana


w klasie URL, powoduje zwrcenie obiektu  ,*. Obiekt ten bdzie

nastpnie wykorzystany w celu pobrania strumieni wykorzystywanych


do komunikacji.
! %* % * 
 # ! %*

3. Nakazanie przegldarce, aby nie umieszczaa danych doczonych do adresu

URL w swojej pamici podrcznej Pierwsz czynnoci konieczn do wykonania


jest wskazanie, dziki wykorzystaniu obiektu  ,*, aby dane przekazywane
za jego pomoc nie byy nigdy umieszczane przez przegldark w pamici podrcznej.
Tego rodzaju podejcie gwarantuje uzyskanie najwieszych wynikw za kadym
razem.
 % * #  ! %$ ( 

4. Ustawienie wszystkich podanych nagwkw HTTP Jeli chce si ustawi

nagwki dania HTTP (patrz podrozdzia 19.7), mona w tym celu uy metody
o nazwie  3  .
 % * #  R      >7  %

5. Utworzenie strumienia wejciowego klasy ObjectInputStream Konstruktor tej

klasy pobiera strumie danych nieprzetworzonych, udostpniany przez obiekt klasy


 ,*. Poczenie z serwerem WWW ustanawiane jest w momencie
utworzenia strumienia wejciowego.
K0 %?+  * G 0 %* 
K0 %?+  % * # ?+ 

6. Odczytanie struktur danych przy uyciu metody readObject Metoda ta zwraca


obiekt klasy 0, dlatego te konieczne jest wykonanie rzutowania na bardziej

okrelon klas obiektu przesyanego w rzeczywistoci przez serwer.


 F   %  F  * G 0 %*#
K0 %
! %*  %

7. Zamknicie strumienia wejciowego


* G 0 %*#%  

Aplikacja dziaajca po stronie serwera


Aby wysa do apletu struktury danych zachowane przy uyciu serializacji, serwlet musi
wykona cztery poniej przedstawione czynnoci. Zaoono, e metody  oraz  
dysponuj przekazanymi w postaci argumentw obiektami 3  oraz    klas
 54 3  oraz  54   . Podobnie jak poprzednio, przedstawione
czynnoci zostay uproszczone przez pominicie wymaganych blokw +2+ .

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

955

1. Zasygnalizowanie przesyania danych binarnych Jako typ MIME przesyanej


odpowiedzi konieczne jest okrelenie  4**6105 *4*0.

Jest to standardowy typ MIME wskazujcy obiekty zakodowane za pomoc


strumienia 0 . Jednak w praktyce, z tego wzgldu, e to aplet
(a nie przegldarka) odczytuje dane, okrelenie tego typu nie jest tak bardzo wane.
Wicej informacji na temat typw MIME zostao przedstawionych w podrozdziale
19.10, Odpowied serwera: Nagwki odpowiedzi HTTP.
+*
 0@   %*  *% *3"Q0 1 Q * *
Q0 %
  # ! < 
 0@   %*

2. Utworzenie obiektu klasy ObjectOutputStream


K0 %K+ 
 G0 %*  
K0 %K+   # K+ 

3. Zapisanie struktury danych wykorzystujc metod writeObject Wikszo,

obsugiwanych wewntrznie przez jzyk Java, struktur danych moe by wysanych


przy uyciu metody *0. Jednake klasy utworzone samodzielnie musz
implementowa interfejs *4*4. To do proste do spenienia wymaganie,
poniewa interfejs ten nie definiuje danych metod. Zwyczajnie naley
zadeklarowa klas implementujc wspomniany interfejs.
 F   %   F ###

 G0 %* #* K0 %  %

4. Oprnienie strumienia w celu zagwarantowania wysania caej zawartoci

do aplikacji klienta

 G0 %* #(  $

W kolejnym podrozdziale przedstawimy przykad zastosowania tunelowania HTTP.

21.4. Przegldarka da wysyanych do serwera,


uywajca serializacji obiektw
oraz tunelowania HTTP
Wielu ludzi interesuje si rodzajem zapyta wysyanych do najpopularniejszych wyszukiwarek internetowych. Wynika to po czci z ciekawoci (Czy naprawd a 64 procent zapyta zadanych w wyszukiwarce AltaVista pochodzi od pracodawcw poszukujcych programistw znajcych technologi Java?), a po czci z de programistw do dostosowania
zawartoci tworzonych przez nich witryn do najczciej zadawanych zapyta, co powoduje
zazwyczaj zwikszenie ich pozycji w rankingu wyszukiwarek.
W tym podrozdziale przedstawiono wykorzystanie poczenia aplikacji apletu oraz serwletu, sucego do zaprezentowania fikcyjnej wyszukiwarki o nazwie super-wyszukiwarkainternetowa.com, ktra na bieco wywietla przykadowe zapytania wysyane przez uytkownikw. Na listingu 21.5 pokazany zosta gwny aplet wykorzystujcy zewntrzn klas

956

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


(przedstawion na listingu 21.6) do pobierania zapyta w wtku dziaajcym w tle. Po zainicjowaniu procesu przez uytkownika, co p sekundy aplet umieszcza w przewijanym
obszarze tekstowym przykadowe zapytanie. Zostao to przedstawione na rysunku 21.3. Na
koniec listing 21.7. prezentuje kod aplikacji serwletu tworzcego zapytania po stronie serwera. Powoduje on wygenerowanie losowego przykadu rzeczywistych, zadawanych przez
uytkownika zapyta i podczas kadego dania wysya do klienta 50 z nich. Niektre
szczegy dotyczce zastosowanych metod zostay omwione w rozdziale 19.
Osoby, ktre bd chciay pobra kod rdowy apletu oraz serwletu z archiwum umieszczonego pod adresem: ftp://ftp.helion.pl/przyklady/serinp.zip i bd prboway uruchomi
aplikacj samodzielnie, musz wiedzie, e bdzie ona dziaa jedynie wtedy, gdy wywietlona zostanie gwna strona HTML przy wykorzystaniu protokou HTTP (na przykad
uywajc w tym celu adresu URL postaci http://). Pobranie strony bezporednio z dysku
zakoczy si niepowodzeniem, poniewa aplet w celu komunikowania si z serwletem czy
si ze swoim katalogiem domowym. Poza tym, mwic oglnie, prba nawizania poczenia przy uyciu obiektu  ,* w wypadku apletw, ktre nie korzystaj z poczenia HTTP, nie powiedzie si.

Listing 21.5. PokazZapytania.java


*0 1 #  # 
*0 1 # #2
*0 1 # # 1 #2
*0 1 #*#2
*0 1 # #2
322 
%04%  *%8A C%%$: >%$
24 * >> W ! %*** % 04%04  
2< " #F W ! %* A 
 9%* * * %0*#
2D E
2F
 % *8  >* 0
%0*
2> *49>*+ * *   #   *
2G
*%B *7; **% 7
2(=33(#$ *# 3>
3 *#*
2.HH,' B  
 I
23
 *%%  > @  *  " 
 
*   %**   7  
*1  < "   @  
*1  I%* >+ 7%* >+7%* >! %
*1  F >%0 @  *  % @  * 
*1  F >%0 @  > 0 @  * 
*1   * %$*( 
*1  +*
 
3 1 3%#;   @  
*1  *  % + 
 *%1*
**
 I %>
! #$* 
   I
 
  @   < " 
  @  # J J+ *(7J# ?/7,M


  @  7I


 #!)/<)
    %* >   

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...


Rysunek 21.3.
Wynik dziaania
apletu
PokazZapytania

J%%*> %* > J+  + *(7J#IK7,V


%* >+  I+ 
%* >+ # J%%*> %* >
%* >+ #

%**   $* 
  %* >#

%* >+ 


%* >+ I+
%* >+# J%%*> %* >
%* >+#

%**   $* 
  %* >#

%* >+
%* >! % I! %
%* >! %# J%%*> %* >
%* >! %#

%**   $* 
  %* >#

%* >! %




  %* >7I
 #+K<B
*  % +  !
I 
33X4
  >A
%$  C#+4 *  
339%*4>
* A 04%  7 5    
 7%0 
* A *
33  A >C%
33

08%* : * A C%%$: >%$#
*  % @  *  F >%0 @  
 7*  % + 
> 0 @  *  F >%0 @  
 7*  % + 
&
322P 5 *  * %*5*8%* >+    
2%$*4 >
* A 04% 5*  04%  *   
2 > #G%*5*8%* +
2 0 
* A * % 7 5!56:9*
2   > #
23

957

958

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


 *%1*
 %* (
%*)1  1 
*( 1 # +% %* >+ 
*(S* %$*
<$
% G *  0 % <$
$* 
* %$* 
  @  # < "
% G *  0 %#  
 $+   % 5*  04%  *   A%$*###
& 
 $+   % 5*  04%  * 09
* A ###
&
& *( 1 # +% %* >+
* %$*( 
 $+   % 5*  04%   *  A  ###
& *( 1 # +% %* >! %
  @  # < "
&
&
322 % 
* A 04% *  * >*  % @  *
2*%:A >
* % 0
 %$ %$*  C
2 
    >  # 5*  *  >*%$  C7
24 >>*0   56* >
2> 0 @  * 
* >
2*  % @  * 7 A  94
* 
  
2%    A* * * >> 0 @  * *  % A%
23
 *%1*

$* * %$*
> @  * *  % @  * 
*  % @  * > 0 @  * 
> 0 @  *  F >%0 @  
 7*  % + 
&
&
*1  1*
> @  * F >%0 @  *@  
33P 5 *94
*   A A  
   7 %* :%*A0 % *>:7
33
 9  
 6% >
87%
*   A>C% #
33 *
 6 *8
56
>7 %9  8 6
> 
 %$
33A4% C * %*%$  %*49%$  :#
$* S*@  #* F* %
 $+  K% >* *  
    ###
  ,
&
 $+  K 
    ###
+*NO  *  

  * *@  #* @  * 
&% %$?K)"% * &
+* >>% *   Y
33* 56%*4  *     > %:A >
#
(**H*D  * # $*
*(S* %$*
 
&
  @  #  
  * N*O
  @  #  
 >>% *   

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

959

  H#Z
&
&
 *%1*
  
  %


<$
#   %
2,HHH
&% %$? 
)"% ** &
&
&

Listing 21.6. KolekcjaZapytan.java


*0 1 # #2
*0 1 #*#2
322  * 0> 7 %   %$*  567
2
> 
 @  * 0  56 7 
>
* @ >%  56(
2G*8
% *   0 4 > A94%
 * %*4:  C  
2
% %$ 0
  %$ 9%** >> 
2K0 %?+ #  *%*4:  C 4 * %  *  0
2
%  0  
8 @  * 7
2 5 56 %*> * @ >%   0 * *   #
2F >      +$W * #
2D E
2F
 % *8  >* 0
%0*
2> *49>*+ * *   #   *
2G
*%B *7; **% 7
2(=33(#$ *# 3>
3 *#*
2.HH,' B  
 I
23
 *%% F >%0 @  *     
*1  +*NO  * 
*1  +*NO%  @  * 
*1   * F* %( 
*1  
 
 
 *%F >%0 @  +*  >7*  % + 

33F* % 0 > 5 * 0
*  > 
 70 >9
33
 %856
 > 5  0  
 * * 94% 0 #
+*> *  % + #  % 
+*$ *  % + # B 
**  % + #  

 
  > 7$ 77  >
<$
  > *  0 %@  *  <$
$* 
  > *  0 %@  * #  
&% %$' (
)"% *( 
* F* % 
&
&
 *%1*


%  @  * * @  * 

960

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


  * %  @  * 
&% %$?K)"% ** 
%  @  *  
  *  
&
* F* % 
&
 *%+*NO @  * 
   * 
&
 *% * F* %
 * F* %
&

 
   
  
 !"    #$ %$
 !& "   '
(()*+ ,-*
 .$
/ 0  $
 !0+$
+ 1
((2
 0
*/,
3*   $/*$ *.$ &
 & "4'
(()**,1   
0 /-0*51$ 
$  
 
1   
0 #
 1   
0 &    
0'


((0 $
$1 
/ (($  /  1 
   
 /

    #
  &
$1 '

 
   '
6 ") 7 $   4

 
 '
6
6
&

Listing 21.7. GeneratorZapytan.java


 %>  %
*0 1 #*#2
*0 1 "# 1 #2
*0 1 "# 1 #$#2
322+  4%  *% A C%%$: >%$  * *
2* A 04%0 9%** >> K0 %K+ 
  
2 * > *   *  0 >P 1 #
2D E
2F
 % *8  >* 0
%0*
2> *49>*+ * *   #   *
2G
*%B *7; **% 7
2(=33(#$ *# 3>
3 *#*
2.HH,' B  
 I
23
 *%% ;   @   " 
B+ 1 
 *%1*

; B+ 1  R  R 7
B+ 1     

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...


$ + 1 )"% *7?K)"% *
 0/  *  
+* %*>/  * 
 R #      / *
*( %*>/  *  [[
 %*>/  * # R ( 
0/  * ( 
&

  
#
8  (91:9
$91 8'

 & "  ; 
'
1   
0 #
 1   
0
 &    
0'

   #    1)0
 '
33P 5 * A  *8*  

  >
%$7 9 *6 *879
33> 5    A *   %0 * ( 0  * * %0**   + * *  #
 &
 1   '
 &4'
&
 *%1*

  B+ 1  R  R 7
B+ 1     
$ + 1 )"% *7?K)"% *

;  R 7  
&
*1  +*NO @  *  0/  * 
+*NO  *  +*NZHO
(**H*D  * # $*
  * N*O   @  * 
*(0/  * 
  * N*O*,=  * N*O
&
&
   * 
&
33 %*    *  A    
*=Q
*1  +*   @  * 
+*NO  * ;
* 7G0 >*  &
+*NO% %
 
> %7  %7  %&
+*NO

*( %0 7 7
 7
 * &
+*NO* >   7
  %  * 
7
% % &
+*NO  
> * >*+ * *   #   * 7
 > * 0 %     P+ 7
    P 1 + 1   7
    P+ 7
> * >*+ * *   #   * G
* .7
+ * *   #   * G
* .7
  *   7 %$ **P 1 + 1   7 P+ 7
    
  * !;?%*0 > P 1 7 
0 >P 1 
* 0 %%$ *    &
+*NO >% * 777S7SSS&
+*NONO   @


961

962

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


  * 7% %7
7
* >7  7 >% * &
+*  * 
(**H*D   @
# $*
  *   *   )     @
N*O
&
   * 
&
*1  +*  )  +*NO %%$
**
> *' $# 
2 %%$# $
  %%$N*
> O
&
&

21.5. Wysyanie danych przy uyciu metody POST


i przetwarzanie wynikw wewntrz apletu
(tunelowanie HTTP)
Podczas przesyania danych przy uyciu metody , aplet ma dwie moliwoci wywietlenia
wynikw. Moe on nakaza wykonanie tej czynno przegldarce (utworzy odpowiedni
obiekt adresu URL, a nastpnie wywoa metod  4,1&'%  ) lub te
przetworzy dane samodzielnie (utworzy obiekt adresu URL, pobra obiekt klasy  ,
*, otworzy strumie wejciowy i odczyta dane). Metody te zostay omwione, odpowiednio, w podrozdziale 21.1. oraz 21.3. W przypadku wykorzystywania danych 
moliwe jest wykorzystanie tylko drugiej metody, poniewa konstruktor obiektu URL nie
zawiera metody pozwalajcej na skojarzenie z nim danych przesyanych przy uyciu metody
. Przekazywanie danych w ten sposb ma kilka zalet, ale te niedogodnoci w porwnaniu z uywaniem metody . Do dwch najwaniejszych niedogodnoci nale: konieczno umieszczenia programu dziaajcego po stronie serwera na tym samym komputerze co
aplet oraz konieczno wywietlania danych przy uyciu apletu. Nie istnieje bowiem moliwo przekazania kodu HTML do przegldarki. Do zalet natomiast naley to, e program
dziaajcy po stronie serwera moe by prostszy (nie trzeba umieszcza wynikw w kodzie
HTML), za aplet moe odwiea wywietlane dane bez potrzeby ponownego odczytywania strony. Co wicej, aplety wykorzystujce do komunikacji metod , mog stosowa
w celu wysyania danych do serwletu strumienie przekazujce dane zapisane za pomoc serializacji, oprcz ju opisanej wczeniej, analogicznej metody podczas pobierania danych
z serwletu. To powany plus, poniewa wykorzystywanie danych serializowanych oraz tunelowania HTTP pozwala na ominicie zabezpiecze stosowanych na zaporach sieciowych,
aby uniemoliwi bezporednie poczenia pomidzy gniazdami. Aplety wykorzystujce
metod  mog odczytywa dane zapisywane w ten sposb (patrz podrozdzia 21.4), lecz
nie s w stanie ich wysya, gdy niemoliwe jest doczenie do adresw URL dowolnych
danych binarnych.

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

963

Aby umoliwi wysyanie z apletw do serwera danych przy uyciu metody  oraz odczytywanie wynikw, wymagane jest wykonanie trzynastu czynnoci przedstawionych poniej. Chocia ich liczba jest do dua, to jednak kada z czynnoci jest wzgldnie prosta.
Kod zosta znacznie uproszczony dziki pominiciu blokw postaci + 2+  , w ktrych powinny zosta umieszczone wszystkie instrukcje.
1. Utworzenie obiektu URL wskazujcego na domowy serwer apletu Podobnie

jak poprzednio, ze wzgldu na to, e adres URL musi wskazywa na serwer,


z ktrego pobrany zosta aplet, bardziej sensowne jest okrelenie adresu
wzgldnego i pozwolenie na skonstruowanie go w sposb automatyczny.
*  % +  !
I 
+*> *  % + #  % 
+*  *  % + # B 
**  % + #  
+*  >
 3 1 3 * +  

  > 7  77  >
 

2. Utworzenie obiektu URLConnection Obiekt ten bdzie nastpnie wykorzystany

w celu pobrania strumieni wykorzystywanych do komunikacji.


! %* % * 
 # ! %*

3. Nakazanie przegldarce, aby nie umieszczaa danych doczonych do adresu

URL w swojej pamici podrcznej


 % * #  ! %$ ( 

4. Uzyskanie od serwera pozwolenia na wysyanie danych, a nie jedynie

odbieranie wynikw
 % * # K 

5. Utworzenie strumienia ByteArrayOutputStream, wykorzystywanego

do buforowania danych, ktre bd wysyane do serwera


Strumie ByteArrayOutputStream wykorzystywany jest w celu okrelenia rozmiaru
danych wyjciowych, tak aby aplet by w stanie wysa nagwek ,7 ,
wymagany podczas da typu . Konstruktor klasy - 
wskazuje pocztkowy rozmiar bufora danych, lecz jego podanie nie jest wymagane,
gdy rozmiar bufora bdzie zwikszany w razie potrzeby w sposb automatyczny.
I  K+  * I*  I  K+ Z,.

6. Skojarzenie strumienia wyjciowego z obiektem klasy

ByteArrayOutputStream
Wysajc normalne dane formularza, naley wykorzysta obiekt klasy
*(*. W celu wysania struktur danych zachowanych przy uyciu
serializacji, trzeba wykorzysta w zamian obiekt klasy 0 .
*G* 
 G0 %*   *G*  * I* 7 

7. Umieszczenie danych w buforze W przypadku normalnych danych formularza


naley wykorzysta metod *. Natomiast w celu wysania obiektw wysokiego
poziomu, zachowanych przy uyciu serializacji, metod *0.

964

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


+* ,)%
# %
  G  %,
+* .)%
# %
  G  %.
+*
   , ,-  . .33@%    >
 G0 %* #*
 33:6 8 9%*  
*7 * * 

 G0 %* #(  $339%*  0 


0 >* % *  9*   A
>    
* 

8. Ustawienie nagwka o nazwie Content-Length Nagwek ten jest wymagany


w przypadku danych przesyanych przy uyciu metody , nawet jeli nie jest on
uywany w przypadku metody .
 % * #  R   ! Q $7
+*#1  K( * I* # * 

9. Ustawienie nagwka o nazwie Content-Type Przegldarka Netscape uywa


domylnie typu 4* %., jednak przesyanie regularnych danych
formularza wymaga ustawienia nagwka o wartoci  4**61.
4, ktry z kolei jest domylny w przypadku przegldarki Internet Explorer.

Dlatego te, w celu umoliwienia przenoszenia programw, w przypadku wysyania


zwykych danych formularza, warto ta powinna zosta ustawiona w sposb
jawny. W przypadku wysyania danych zapisanych przy uyciu serializacji warto
ta nie jest istotna.
 % * #  R   ! Q< 7  *% *3"QQ(Q %



10. Wysanie rzeczywistych danych


* I* #* < % * # K+ 

11. Utworzenie strumienia wejciowego W przypadku danych tekstowych (ASCII)


oraz binarnych zazwyczaj wykorzystywany jest obiekt klasy -.. ,
natomiast w przypadku danych serializowanych obiekt klasy 0/ .
I(( 


 G 0 %*  I(( 

 
?+ 
 % * # ?+ 

12. Odczytanie wyniku

Szczegowy opis wymaganych czynnoci zaley od rodzaju danych wysyanych


przez serwer. Poniej przedstawiony zosta przykad wykonujcy pewne nieokrelone
bliej czynnoci z kadym wierszem danych przesyanych przez serwer:
+**  
$* *  
 G 0 %* #
* S 
! %**  
&

13. Pogratulowanie sobie Procedura obsugi danych przesyanych przy uyciu metody
 jest duga i zawia. Na szczcie, jest to do standardowy proces. Oprcz tego

mona zawsze pobra kod rdowy umieszczony pod adresem ftp://ftp.helion.pl/


przyklady/serinp.zip i wykorzysta go w charakterze szablonu, od ktrego mona
rozpocz tworzenie wasnych programw.
W kolejnym podrozdziale przedstawiony zostanie przykad apletu, wykonujcego wszystkie opisane czynnoci.

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

965

21.6. Aplet wysyajcy dane


przy uyciu metody POST
Na listingu 21.8. przedstawiony zosta aplet wykorzystujcy metod opisan w poprzednim
podrozdziale. Aplet ten w celu wysania danych przy uyciu metody POST pod wskazany
adres URL wykorzystuje obiekt klasy  ,* oraz - . Uywa
on rwnie klasy o nazwie )*4) , ktra umieszczona zostaa w archiwum znajdujcym si pod adresem: ftp://ftp.helion.pl/przyklady/serinp.zip.
Na rysunku 21.4. przedstawiony zosta wynik przesania danych do serwletu o nazwie 
)874)*, ktry jest niezwykle prosty i tworzy stron WWW, zawierajc wszystkie parametry przesanego dania. Szczegowe informacje na ich temat umieszczone zostay
w podrozdziale 19.6, danie klienta: Dostp do danych formularza.
Listing 21.8. WyslijPost.java
*0 1 #  # 
*0 1 # #2
*0 1 # # 1 #2
*0 1 # #2
*0 1 #*#2
322 
%04%     %$(* /  7 /   
2  * 

 7  8*  A 04%0 


 * % 
2  >     7%*  
 * ?9%* 
 K+<#
2D E
2F
 % *8  >* 0
%0*
2> *49>*+ * *   #   *
2G
*%B *7; **% 7
2(=33(#$ *# 3>
3 *#*
2.HH,' B  
 I
23
 *%% G *0   " 
 
*   %**   
*1  )>*    < >   ?* * 7 / * > 7
 
 ) * 7 / +   7
 /  7 
 ?
*1  I%* >G *0
*1  < "   G*>
*  % + 
 *%1*
**
 I %>
! #$* 
   I
 
    G 0 %*   
  G 0 %*#   ;*
 \7,
  G 0 %*# J J+ *(7J#IK7,M
 ?* * 
 )>*    < >  ?* =7,Z
  G 0 %*#

 ?* * 
 / * > 

966

Cz III n Programowanie aplikacji dziaajcych po stronie serwera

Rysunek 21.4.
Wynik dziaania
apletu o nazwie
WyslijPost,
wysyajcego
przy uyciu
metody POST
dane do serwletu
PokazNaglowki

 )>*    < >  / * >=7,Z


  G 0 %*#

 / * > 


 
 ) * 
 )>*    < >  
 ) * =7UH
  G 0 %*#

 
 ) * 
! 1    , ! 1 
  G 0 %*#

   ,
 / +   
 )>*    < >  +  =7,Z
33 %    * 64>*> 6 *80
*    7
33>:   A  #
 / +   #
0  < >  # )
*  ( 
*  % +  !
I 
33 
 B  %  A C%%$ >
>  :% %$

 > >  #
+*  *  % + # B 
+*>*> G*>G* 0 %>    * >*> ###
*(  # $H
>*> G*>IA
=<    *  %% Y
 %*     GGG9%*>AB<< 7Y
 *  >  
 > %4> 5 * 
 Y
  %*](* =]#'9 * 0 0
 >%$* *    GGGY
  >    #
 ) 
( 
&

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...


 / +   #
0  < >  # < "  
  G 0 %*#

 / +   
 /  
 )>*    < >   Q, % 
 =7M
+*+*+*#1  K(*  % + #  
 /  #
0  < >  # < "+*
  G 0 %*#

 /  


 
 ?
 )>*    < >  ?=7MH
+*
 
 ?3 1 3%#+$     
 
 ?#
0  < >  # < "
 
 ?
  G 0 %*#

 
 ?
! 1    . ! 1 
  G 0 %*#

   .
%* >G *0 IG 0
 
%* >G *0#

%**   $* 
       
  #

%* >G *0


  G 0 %*#

  


  G 0 %*7I
 #/K<B
  G*> < " 
  G*># J J'  %
7J# ?/7,M
  G*># < ">*> G*>


  G*>7I
 #!)/<)
&
 *%1*
 %* (
%*)1  1 

+*> *  % + #  % 
+*   / +   #
0  < >  # < "
+*%*   /  #
0  < >  # < "
*

?  #  ?%*  
&% %$/ J )"% *( 
Q,33
5   LH
&
+** 
 ?#
0  < >  # < "
 !$  !#  !
 /-

-
-
'
 !"    #$  !& "   '
33/ 9 *8 *679   4
> * * % 
 (
 *8%*
8% 0#
 & "4'
33/ 9 >  6  4
% 9 ** *  A * 
%$
   #
 & <  
'
= %

  
0
0 = 
#
 = %

  
0>?@'(( 
4



33+* C * 04%
(
2
 A
 
 # 2
 A
 

0 = 
-
'

 $ 2 #
84
 )0#8B
/$ 0 B
8C )0#8B
/$ )/B
8C0%$$
#8B
/$ %$
0'

967

968

Cz III n Programowanie aplikacji dziaajcych po stronie serwera


33@ * 
  A   %4 
 K+<
 >  ( 
%$
 &
 $ 2 '
 &4'((
 14
1  /
   0 $

 - 
 
33X4
*  K+<  04> 5 *  A:> ! Q $

  < #

 &:4
0 = 
&'
 & D 2


8"  9! 8- < '
33   4
> /  %    *   %*  A: >! Q< *
0
 56 * 3(Q

33P 5 **8% A   4>A 
 (  7 * * *60  56
33   *% *3"QQ(Q %

7%> *
33  * 56
5 4  * 4   4
>8?  )"  #
P 5 * A  *8
33
  K+< *  9%* * * K0 %K+ 7
33 56 A:> ! Q< * 0   
 87
  9
339 *46#
 & D 2


8"  9;8-8  (994
09
 $$8'
33/ 9 * 6
  K+<
 %*   * * 05%* 

0 = 
&
 ; &    
0'
=44
$ $
 #
 =44
$ $
   
0 $

 &    
0'

 
'

  /E A
#8F 8'

A /& ; 88'

# &
$! G# 

A /& $
'

A /& $ /E A
'
6
&% %$?K)"% ** 
33/ 9 * 6*( %0    >  *P 1
+  ##* ?K)"% *=* 
&
&
33K* >>  
< "J*
0  %*  %** > >  
33* % C* > *>    
33< "J*
# *9   
*   56* %4  > 7
33 8* >
0 049%* 
Q %

* %  > *>#
*1  +*  %@ >
  )>*    < >   
+*  %K*   #
0  < >  # < "
 )%
# %
  %K*  
&
&

Rozdzia 21. n Wykorzystywanie apletw w charakterze interfejsu...

969

21.7. Pomijanie serwera HTTP podczas komunikacji


z programem po stronie serwera
Chocia aplety mog utworzy poczenia sieciowe jedynie z tym samym komputerem,
z ktrego zostay wczytane, nie musz uywa w tym celu koniecznie tego samego portu
(na przykad portu 80 w przypadku pocze HTTP). W celu komunikacji z rnymi klientami dziaajcymi na tym samym serwerze mog one uywa zwykych gniazd, JDBC oraz
RMI.
Wykonanie tych czynnoci w apletach przebiega dokadnie tak samo, jak w przypadku
zwykych programw utworzonych w jzyku Java, dlatego te mona uy metod wykorzystania gniazd, JDBC oraz RMI, ktre s ju znane, pod warunkiem, e uywa si tego samego
serwera sieciowego, z ktrego pobrany zosta aplet.

21.8. Podsumowanie
Formularze HTML stanowi najprostszy oraz najpowszechniej stosowany interfejs uytkownika programw dziaajcych po stronie serwera. Tym niemniej, aplety dostarczaj bogatszego zestawu elementw interfejsu uytkownika, umoliwiaj utworzenie ekranw z cigle
odwiean zawartoci oraz upraszczaj zdecydowanie przesyanie duych zoonych
struktur danych. Generaln zasad jest uywanie formularzy wszdzie tam, gdzie jest to tylko
moliwe. Jednak wygodnie jest dysponowa moliwoci uycia apletw w przypadku, gdy
formularze HTML staj si zbyt ograniczone.

You might also like