IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Serwisy internetowe.
                                         Programowanie
           KATALOG KSI¥¯EK               Autorzy: Marty Hall, Larry Brown
                                         T³umaczenie: Szymon Kobalczyk,
                      KATALOG ONLINE     Marek Pa³czyñski, Rafa³ Szpoton
                                         ISBN: 83-7361-155-X
       ZAMÓW DRUKOWANY KATALOG           Tytu³ orygina³u: Core Web Programming, 2nd Edition
                                         Format: B5, stron: 1254
                                         Przyk³ady na ftp: 1211 kB
              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     Kompendium wiedzy dla profesjonalnych programistów serwisów internetowych.
                                         Ksi¹¿ka zawiera komplet informacji niezbêdnych twórcom zaawansowanych aplikacji
                                         sieciowych i opisuje: HTML 4, Java Standard Edition 1.3, serwlety, JavaServer Pages
         CENNIK I INFORMACJE             i wiele innych technologii. „Serwisy internetowe. Programowanie” ³¹czy te technologie
                                         pokazuj¹c, jak przy ich pomocy tworzyæ profesjonalne systemy.
                   ZAMÓW INFORMACJE      HTML 4: Dog³êbny, praktyczny opis struktury dokumentu HTML, jego elementów, ramek
                     O NOWO CIACH        i styli kaskadowych.
                                         Java 2: Podstawy sk³adni, projektowanie zorientowane obiektowo, aplety, tworzenie
                       ZAMÓW CENNIK
                                         animacji, narzêdzie Java PlugIn, tworzenie interfejsu u¿ytkownika (Swing), Java 2D API,
                                         aplikacje wielow¹tkowe, programowanie sieciowe, korzystanie z baz danych i jeszcze
                 CZYTELNIA               wiêcej.
                                         Technologie serwerowe Javy: Serwlety, JSP, XML, JDBC – fundamentalne technologie
          FRAGMENTY KSI¥¯EK ONLINE       umo¿liwiaj¹ce budowê aplikacji w Javie. Tematy zaawansowane dotycz¹ tworzenia
                                         w³asnych bibliotek znaczników JSP, ³¹czenia serwletów z JSP (MVC), tworzenie puli
                                         po³¹czeñ do baz danych, SAX, DOM i XSLT. Dok³adnie omówiono tak¿e HTTP 1.1.
                                         JavaScript: Dynamiczne tworzenie zawarto ci stron WWW, ledzenie zachowania
                                         u¿ytkownika, sprawdzanie poprawno ci danych w formularzach HTML. Do³¹czono
                                         podrêczny skorowidz komend.
                                         Pierwsze wydanie tej ksi¹¿ki jest u¿ywane jako podrêcznik na takich uczelniach jak
                                         MIT, Standford, UC Berkeley, UCLA, Princeton i John Hopkins. Ksi¹¿ka, któr¹ trzymasz
                                         w rêku, zosta³a zaktualizowana i uzupe³niona o najnowsze technologie oraz
                                         towarzysz¹ce im przyk³ady gotowego kodu.
                                            • wiatowy bestseller — aktualne kompendium dla zaawansowanych programistów
Wydawnictwo Helion                            serwisów WWW
ul. Chopina 6
                                            • Dog³êbny opis HTML 4, CSS, Javy 2, serwletów, JavaServer Pages i XML
44-100 Gliwice
                                            • Przyk³ady kodu u¿ywanego przez profesjonalistów
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
  O Autorach...................................................................................................................................................21

  Wstęp.......................................................................................................................................................... 23

Część I Język HTML                                                                                                                                            29
  Rozdział 1. Projektowanie stron WWW w HTML 4.0................................................................................. 31
       1.1. Język 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 dokumentów HTML ............................................................... 38
            Szablon dokumentu HTML...................................................................................... 39
            Deklaracja DOCTYPE.............................................................................................. 39
       1.5. Nagłówek HEAD — ogólne informacje o stronie ........................................................ 41
            Obowiązkowy element nagłówka HEAD .................................................................... 42
            Opcjonalne elementy nagłówka HEAD...................................................................... 42
       1.6. Sekcja BODY — część główna dokumentu ............................................................... 47
       1.7. Podsumowanie ...................................................................................................... 50

  Rozdział 2. Elementy blokowe w HTML 4.0................................................................................................51
       2.1. Nagłówki ............................................................................................................... 52
       2.2. Podstawowe bloki tekstu ........................................................................................ 53
            Podstawowy akapit ................................................................................................ 54
            Akapit zachowujący znaki rozdzielające.................................................................... 55
            Blok cytatu............................................................................................................ 56
            Adresy .................................................................................................................. 56
       2.3. Listy numerowane, wypunktowane i wcięte............................................................... 57
            Listy numerowane ................................................................................................. 57
            Listy wypunktowane ............................................................................................... 59
            Listy definicji ......................................................................................................... 61
       2.4. Tabele .................................................................................................................. 62
            Podstawowa struktura tabel ................................................................................... 62
            Definiowanie wierszy tabeli..................................................................................... 66
            Nagłówki kolumn i komórki danych.......................................................................... 67
            Grupowanie zawartości tabeli ................................................................................. 70
       2.5. Formularze ............................................................................................................ 72
       2.6. Pozostałe elementy blokowe ................................................................................... 73
       2.7. Podsumowanie ...................................................................................................... 75
4        Spis treści


    Rozdział 3. Elementy tekstowe w HTML 4.0 ............................................................................................. 77
         3.1. Fizyczne style znaków............................................................................................. 77
         3.2. Logiczne style znaków ............................................................................................ 82
         3.3. Tworzenie łączy hipertekstowych ............................................................................. 84
         3.4. Umieszczanie ilustracji ........................................................................................... 87
              Animowane obrazki GIF .......................................................................................... 87
              Element IMG ......................................................................................................... 88
         3.5. Mapy obrazu interpretowane po stronie klienta......................................................... 91
         3.6. Osadzenie innych obiektów w dokumentach ............................................................. 94
              Osadzanie apletów Javy ......................................................................................... 94
              Osadzanie plików w formatach audio, wideo i innych przez moduły rozszerzające ........ 96
              Osadzanie kontrolek ActiveX................................................................................... 97
              Wyświetlanie ruchomych szyldów ............................................................................ 99
         3.7. Sterowanie łamaniem tekstu ................................................................................ 100
         3.8. Podsumowanie .................................................................................................... 101

    Rozdział 4. Ramki ......................................................................................................................................103
         4.1. Szablon dokumentu ramek ................................................................................... 104
         4.2. Definiowanie układu ramek................................................................................... 105
         4.3. Definiowanie zawartości komórek ramek................................................................ 109
              Przykłady............................................................................................................. 111
         4.4. Odwoływanie się do komórek ramek ...................................................................... 112
              Predefiniowane nazwy ramek ................................................................................ 115
         4.5. Rozwiązywanie najczęstszych problemów z ramkami ............................................... 115
              Tworzenie zakładek do stron z ramkami................................................................. 116
              Drukowanie stron z ramkami ................................................................................ 116
              Uaktualnianie wielu ramek równocześnie............................................................... 117
              Chronienie dokumentu przed umieszczeniem w ramce............................................ 120
              Tworzenie pustych komórek.................................................................................. 120
         4.6. Ramki wewnętrzne ............................................................................................... 121
         4.7. Podsumowanie .................................................................................................... 124

    Rozdział 5. Kaskadowe arkusze stylów .................................................................................................125
         5.1. Definiowanie reguł stylu........................................................................................ 126
         5.2. Zewnętrzne i lokalne arkusze stylów ...................................................................... 128
              Zewnętrzne arkusze stylów ................................................................................... 128
              Element STYLE i arkusze stylów JavaScript ............................................................ 130
              Wewnętrzne definicje stylów ................................................................................. 130
         5.2. Wskaźniki............................................................................................................ 131
              Elementy HTML ................................................................................................... 132
              Klasy definiowane przez użytkownika..................................................................... 133
              Identyfikatory definiowane przez użytkownika ......................................................... 133
              Pseudoklasy odsyłaczy......................................................................................... 134
         5.4. Łączenie kaskadowe. Reguły pierwszeństwa w arkuszach stylów.............................. 135
         5.5. Właściwości kroju pisma....................................................................................... 136
         5.6. Właściwości pierwszego planu i tła ........................................................................ 141
         5.7. Właściwości tekstu .............................................................................................. 143
         5.8. Właściwości prostokąta ograniczającego................................................................ 147
              Marginesy ........................................................................................................... 148
              Obramowanie ...................................................................................................... 148
              Dopełnienie......................................................................................................... 150
              Tryby wyświetlania prostokąta ograniczającego....................................................... 150
Spis treści            5

      5.9. Obrazki i elementy pływające ................................................................................ 151
      5.10. Właściwości list ................................................................................................. 153
      5.11. Standardowe formaty zapisu wartości .................................................................. 153
           Długości ............................................................................................................. 154
           Kolory................................................................................................................. 154
      5.12. Warstwy ............................................................................................................ 155
           Definiowanie warstw przez elementy LAYER i ILAYER .............................................. 155
           Definiowanie warstw przez arkusze stylów ............................................................. 159
      5.13. Podsumowanie .................................................................................................. 162


Część II Programowanie w języku Java                                                                                               163
  Rozdział 6. Podstawowe informacje o Javie ..........................................................................................165
      6.1. Cechy charakterystyczne Javy................................................................................ 166
           Java jest językiem współpracującym z Internetem i aplikacjami sieciowymi ............... 167
           Java jest językiem przeznaczonym dla różnych platform........................................... 169
           Java jest językiem łatwym do nauczenia ................................................................ 172
           Java jest językiem obiektowym.............................................................................. 173
           Dzięki 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 językiem niezależnym od platformy .......................................................... 175
           Java jest językiem łatwym do nauczenia ................................................................ 177
           Java jest językiem obiektowym.............................................................................. 177
           Java jest językiem, który można stosować w każdym projekcie informatycznym ......... 178
      6.3. Wersje Javy ......................................................................................................... 178
           Której wersji powinno się używać?......................................................................... 180
           Bez względu na to, która wersja zostanie wybrana… .............................................. 180
      6.4. Rozpoczęcie pracy................................................................................................ 181
           Instalacja Javy..................................................................................................... 182
           Instalacja przeglądarki obsługującej Javę............................................................... 183
           Zapisanie odsyłacza lub instalowanie dokumentacji API Javy ................................... 183
           Opcjonalne instalowanie zintegrowanego środowiska programistycznego.................. 184
           Utworzenie i uruchomienie programu..................................................................... 185
      6.5. Przykładowe programy Javy ................................................................................... 185
           Aplikacja „Witaj świecie” ...................................................................................... 186
           Argumenty linii poleceń ........................................................................................ 186
           Aplet „Witaj świecie” ........................................................................................... 187
           Parametry apletu ustalane przez użytkownika......................................................... 188
      6.6. Podsumowanie .................................................................................................... 191

  Rozdział 7. Programowanie obiektowe w języku Java.........................................................................193
      7.1. Zmienne obiektowe .............................................................................................. 194
      7.2. Metody ............................................................................................................... 196
      7.3. Konstruktory i słowo kluczowe „this” ..................................................................... 197
           Inicjacja statyczna ............................................................................................... 200
      7.4. Destruktory ......................................................................................................... 200
      7.5. Przeciążanie ........................................................................................................ 201
      7.6. Udostępnianie klas w oddzielnych plikach .............................................................. 204
6       Spis treści

        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, ścieżki dostępu do klas i archiwa JAR ..................................................... 226
             Ścieżka do klas — CLASSPATH ............................................................................ 229
        7.11. Modyfikatory deklaracji ....................................................................................... 232
             Modyfikatory widoczności ..................................................................................... 232
             Inne modyfikatory ................................................................................................ 233
        7.12. Podsumowanie .................................................................................................. 235

    Rozdział 8. Podstawowa składnia języka Java.....................................................................................237
        8.1. Podstawowe informacje na temat składni .............................................................. 238
        8.2. Podstawowe typy danych ...................................................................................... 239
             Konwersja typów prostych .................................................................................... 242
        8.3. Operatory, instrukcje warunkowe i pętle................................................................. 242
             Operatory matematyczne...................................................................................... 243
             Instrukcje warunkowe .......................................................................................... 244
             Pętle .................................................................................................................. 249
        8.4. Klasa Math ......................................................................................................... 252
             Stałe .................................................................................................................. 252
             Metody ogólnego przeznaczenia............................................................................ 252
             Metody trygonometryczne ..................................................................................... 254
             Klasy BigInteger i BigDecimal ............................................................................... 254
        8.5. Wprowadzanie i wyświetlanie danych ..................................................................... 256
             Wyprowadzanie danych na standardowe urządzenie wyjściowe ................................ 256
             Wyprowadzanie danych na standardowe wyjście informacji o błędach....................... 258
             Odczytywanie danych ze standardowego urządzenia wejściowego ............................ 258
        8.6. Uruchamianie programów zewnętrznych ................................................................. 258
        8.7. Referencje........................................................................................................... 264
             Przekazywanie argumentów w Javie....................................................................... 266
             Operator instanceof ............................................................................................. 266
        8.8. Ciągi 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. Przykład — proste drzewo binarne....................................................................... 280
        8.12. Wyjątki .............................................................................................................. 284
             Podstawy obsługi wyjątków................................................................................... 285
             Wielokrotne klauzule catch ................................................................................... 287
             Klauzula Finally ................................................................................................... 288
             Generowanie wyjątków ......................................................................................... 288
             Niesprawdzane wyjątki ......................................................................................... 290
        8.13. Podsumowanie .................................................................................................. 290
Spis treści            7


Rozdział 9. Aplety i podstawy operacji graficznych..............................................................................291
    9.1. Czym są aplety? .................................................................................................. 292
    9.2. Budowanie apletu ................................................................................................ 293
         Szablony apletów................................................................................................. 293
         Szablony HTML.................................................................................................... 294
    9.3. Przykładowy aplet................................................................................................. 295
         Automatyczne odświeżanie wyglądu okna .............................................................. 296
         Odświeżanie kodu apletu podczas prac projektowych.............................................. 296
    9.4. Poszczególne etapy pracy apletu ........................................................................... 298
    9.5. Inne metody apletów ............................................................................................ 299
    9.6. Znacznik HTML APPLET ........................................................................................ 304
    9.7. Odczyt parametrów apletu .................................................................................... 306
         Przykład odczytu parametrów 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 kreślenia .................................................................................................... 318
         Współrzędne i obszary obcinania .......................................................................... 319
    9.12. Wyświetlanie plików graficznych .......................................................................... 319
         Pobieranie rysunków określonych względnym adresem URL..................................... 320
         Pobieranie rysunków określonych bezwzględnym adresem URL................................ 322
         Pobieranie rysunków w aplikacjach Javy................................................................. 323
    9.13. Buforowanie plików graficznych ........................................................................... 325
    9.14. Nadzorowanie procesu pobierania rysunków......................................................... 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
        Najczęściej wykorzystywane metody klasy Graphics2D............................................ 339
    10.2. Style kreślenia................................................................................................... 342
        Klasy kształtu...................................................................................................... 342
    10.3. Style wypełnienia ............................................................................................... 346
        Klasy wypełniania ................................................................................................ 346
        Rysunki jako wzorce wypełnień ............................................................................. 349
    10.4. Przezroczystość ................................................................................................. 353
    10.5. Korzystanie z czcionek lokalnych ......................................................................... 355
    10.6. Style kreślenia linii............................................................................................. 357
        Atrybuty pióra ...................................................................................................... 357
    10.7. Transformacje współrzędnych ............................................................................. 362
        Pochylenie .......................................................................................................... 365
    10.8. Pozostałe funkcje biblioteki Java 2D .................................................................... 366
    10.9. Podsumowanie .................................................................................................. 367

Rozdział 11. Obsługa zdarzeń myszy i klawiatury.................................................................................369
    11.1. Niezależne klasy nasłuchu zdarzeń ...................................................................... 370
        Rysowanie kół ..................................................................................................... 372
    11.2. Implementacja interfejsów nasłuchu.................................................................... 373
8        Spis treści

         11.3. Obsługa zdarzeń w klasach wewnętrznych ............................................................ 374
         11.4. Obsługa zdarzeń w anonimowych klasach wewnętrznych ....................................... 376
         11.5. Standardowe interfejsy nasłuchu......................................................................... 377
         11.6. Za kulisami — niskopoziomowe przetwarzanie zdarzeń ......................................... 382
         11.7. Pole tekstowe poprawiające błędy ....................................................................... 385
         11.8. Klasa deski kreślarskiej ..................................................................................... 387
             Ulepszona deska kreślarska................................................................................. 389
         11.9. Podsumowanie .................................................................................................. 390

    Rozdział 12. Rozmieszczanie komponentów ...........................................................................................391
         12.1. Menedżer rozmieszczenia FlowLayout .................................................................. 392
             Konstruktory menedżera FlowLayout...................................................................... 393
             Inne metody menedżera FlowLayout ...................................................................... 393
         12.2. Menedżer rozmieszczenia BorderLayout ............................................................... 394
             Konstruktory menedżera BorderLayout .................................................................. 396
             Inne metody menedżera BorderLayout................................................................... 396
         12.3. Menedżer rozmieszczenia GridLayout................................................................... 397
             Konstruktory menedżera GridLayout ...................................................................... 397
             Inne metody menedżera GridLayout....................................................................... 399
         12.4. Menedżer rozmieszczenia CardLayout.................................................................. 399
             Konstruktory menedżera CardLayout ..................................................................... 402
             Inne metody menedżera CardLayout...................................................................... 403
         12.5. Menedżer rozmieszczenia GridBagLayout ............................................................. 403
             Obiekt GridBagConstraints ................................................................................... 404
             Przykład .............................................................................................................. 406
             Konstruktor menedżera GridBagLayout .................................................................. 409
             Inne metody menedżera GridBagLayout ................................................................. 409
         12.6. Menedżer rozmieszczenia BoxLayout ................................................................... 410
             Konstruktor menedżera BoxLayout ........................................................................ 413
             Inne metody menedżera BoxLayout ....................................................................... 413
         12.7. Wyłączenie menedżera rozmieszczenia ................................................................ 414
         12.8. Efektywne wykorzystanie menedżerów rozmieszczenia .......................................... 415
             Wykorzystanie zagnieżdżanych kontenerów ............................................................ 416
             Wyłączenie menedżera rozmieszczenia w pracy z niektórymi kontenerami................. 419
             Operowanie wolną przestrzenią wokół komponentów .............................................. 420
         12.9. Podsumowanie .................................................................................................. 423

    Rozdział 13. Komponenty AWT.................................................................................................................425
         13.1. Klasa Canvas .................................................................................................... 426
             Powoływanie i korzystanie z obiektu Canvas........................................................... 427
             Przykład — komponent Kolo ................................................................................. 428
         13.2. Klasa Component .............................................................................................. 430
         13.3. Lekkie komponenty języka Java 1.1..................................................................... 436
         13.4. Klasa Panel....................................................................................................... 438
             Domyślny menedżer rozmieszczenia — FlowLayout................................................. 438
             Tworzenie i posługiwanie się obiektem Panel ......................................................... 439
             Przykład — zastosowanie obiektu Panel do grupowania komponentów..................... 439
         13.5. Klasa Container ................................................................................................. 441
         13.6. Klasa Applet...................................................................................................... 443
         13.7. Klasa ScrollPane ............................................................................................... 443
             Tworzenie i posługiwanie się obiektem ScrollPane.................................................. 443
             Przykład — obiekt ScrollPane zawierający panel o stu przyciskach........................... 443
Spis treści           9

13.8. Klasa Frame ...................................................................................................... 444
    Domyślny menedżer rozmieszczenia — BorderLayout ............................................. 445
    Korzystanie z obiektu Frame ................................................................................. 445
    Przykłady 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
    Przykład — zapisywana ramka .............................................................................. 452
13.10. Klasa Dialog.................................................................................................... 455
    Tworzenie i posługiwanie się obiektami Dialog ....................................................... 455
    Przykład — potwierdzenie zamknięcia okna ........................................................... 455
13.11. Klasa FileDialog............................................................................................... 457
    Przykład — wyświetlanie zawartości plików w polu tekstowym ................................. 457
13.12. Klasa Window.................................................................................................. 459
    Domyślny menedżer rozmieszczenia — BorderLayout ............................................. 460
    Tworzenie i posługiwanie się obiektem Window ...................................................... 460
13.13. Obsługa zdarzeń kontrolek GUI.......................................................................... 461
    Rozproszone przetwarzanie zdarzeń ...................................................................... 462
    Scentralizowane przetwarzanie zdarzeń ................................................................. 463
13.14. Klasa Button ................................................................................................... 465
    Konstruktory ....................................................................................................... 465
    Przykład — aplet z trzema przyciskami .................................................................. 465
    Inne metody klasy Button ..................................................................................... 466
    Obsługa zdarzeń przycisków ................................................................................. 467
13.15. Klasa Checkbox ............................................................................................... 469
    Konstruktory ....................................................................................................... 470
    Przykład — zaznaczone pola wyboru...................................................................... 470
    Inne metody klasy Checkbox ................................................................................ 471
    Obsługa zdarzeń obiektu Checkbox ....................................................................... 472
13.16. Grupy pól wyboru (przyciski opcji) ...................................................................... 472
    Konstruktory ....................................................................................................... 473
    Przykład — pola wyboru a przyciski opcji................................................................ 473
    Inne metody klas CheckboxGroup i Checkbox ........................................................ 474
    Obsługa zdarzeń obiektu CheckboxGroup .............................................................. 474
13.17 Klasa Choice .................................................................................................... 475
    Konstruktor......................................................................................................... 475
    Przykład zastosowania list rozwijanych .................................................................. 475
    Inne metody klasy Choice..................................................................................... 476
    Obsługa zdarzeń obiektu Choice ........................................................................... 477
13.18. Klasa List........................................................................................................ 478
    Konstruktory ....................................................................................................... 479
    Przykład — listy pojedynczego i wielokrotnego wyboru ............................................ 479
    Inne metody klasy List ......................................................................................... 480
    Obsługa zdarzeń obiektu List ................................................................................ 482
13.19. Klasa TextField ................................................................................................ 486
    Konstruktory ....................................................................................................... 487
    Przykład — tworzenie obiektów TextField ............................................................... 487
    Inne metody klasy TextField.................................................................................. 488
    Obsługa zdarzeń obiektu TextField ........................................................................ 490
10        Spis treści

          13.20. Klasa TextArea ................................................................................................ 491
              Konstruktory ....................................................................................................... 491
              Przykład — puste i wypełnione obszary tekstowe ................................................... 492
              Inne metody klasy TextArea .................................................................................. 492
              Obsługa zdarzeń obiektu TextArea......................................................................... 493
          13.21. Klasa Label ..................................................................................................... 493
              Konstruktory ....................................................................................................... 494
              Przykład — cztery różne etykiety ........................................................................... 494
              Inne metody klasy Label....................................................................................... 495
              Obsługa zdarzeń obiektu Label ............................................................................. 496
          13.22. Paski przewijania i suwaki ................................................................................ 497
              Konstruktory ....................................................................................................... 497
              Przykład — różnorodne paski kontrolki suwaków .................................................... 498
              Inne metody klasy Scrollbar.................................................................................. 499
              Obsługa zdarzeń obiektu Scrollbar ........................................................................ 501
          13.23. Menu kontekstowe........................................................................................... 503
              Konstruktory ....................................................................................................... 503
              Przykład — menu kontekstowe apletu ................................................................... 503
              Inne metody klasy PopupMenu ............................................................................. 505
              Obsługa zdarzeń obiektu PopupMenu .................................................................... 505
          13.24. Podsumowanie ................................................................................................ 506

     Rozdział 14. Podstawy Swing..................................................................................................................507
          14.1. Podstawy Swing ................................................................................................. 508
              Różnice pomiędzy technologiami Swing i AWT ........................................................ 508
          14.2. Komponent JApplet ............................................................................................ 515
          14.3. Komponent JFrame ............................................................................................ 517
          14.4. Komponent JLabel ............................................................................................. 518
              Nowe funkcje — wyświetlanie grafiki, obramowania i treści HTML ........................... 519
              Konstruktory klasy JLabel..................................................................................... 520
              Najczęściej 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
              Najczęściej wykorzystywane metody klasy JButton (AbstractButton) ......................... 524
          14.6. Komponent JPanel ............................................................................................. 526
              Konstruktory klasy JPanel..................................................................................... 527
              Nowe elementy — obramowania........................................................................... 527
              Najczęściej wykorzystywane metody klasy BorderFactory ......................................... 528
          14.7. Komponent JSlider............................................................................................. 530
              Nowe elementy — znaczniki przesunięcia i opisy.................................................... 531
              Konstruktory klasy JSlider .................................................................................... 531
              Najczęściej wykorzystywane metody klasy JSlider ................................................... 532
          14.8. Komponent JColorChooser.................................................................................. 534
              Konstruktory klasy JColorChooser ......................................................................... 535
              Najczęściej wykorzystywane metody klasy JColorChooser ........................................ 535
          14.9. Komponent JInternalFrame ................................................................................. 537
              Konstruktory klasy JInternalFrame......................................................................... 538
              Najczęściej wykorzystywane metody klasy JInternalFrame........................................ 538
          14.10. Komponent JOptionPane .................................................................................. 541
              Najczęściej wykorzystywane metody klasy JOptionPane........................................... 541
Spis treści           11

    14.11. Komponent JToolBar ........................................................................................ 545
        Konstruktory klasy JToolBar.................................................................................. 546
        Najczęściej wykorzystywane metody klasy JToolBar ................................................ 546
    14.12 Komponent JEditorPane .................................................................................... 550
        Podążanie za odsyłaczami .................................................................................... 551
        Konstruktory klasy JEditorPane ............................................................................. 552
        Najczęściej wykorzystywane metody klasy JEditorPane............................................ 552
        Implementacja prostej przeglądarki internetowej .................................................... 553
        Obsługa 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 wyświetlaczy.............................. 564
    15.2. JList ................................................................................................................. 565
        Kontrolka JList ze stałym zestawem opcji .............................................................. 565
        Kontrolka JList ze zmiennym zestawem opcji ......................................................... 570
        Kontrolka JList z niestandardowym modelem danych .............................................. 572
        Kontrolka JList z niestandardowym wyświetlaczem ................................................. 577
    15.3. JTree ................................................................................................................ 581
        Proste drzewo JTree............................................................................................. 581
        Obsługa zdarzeń JTree ......................................................................................... 585
        Niestandardowe modele danych i dynamiczne drzewa............................................. 587
        Zastępowanie ikon dla wierzchołków drzewa .......................................................... 590
    15.4. JTable ............................................................................................................... 592
        Prosta tabela JTable ............................................................................................ 592
        Modele danych tabeli........................................................................................... 596
        Wyświetlacze komórek tabeli ................................................................................ 601
        Obsługa zdarzeń tabeli......................................................................................... 603
    15.5. Drukowanie komponentów Swing ........................................................................ 606
        Podstawowe zasady drukowania ........................................................................... 607
        Rola podwójnego buforowania .............................................................................. 609
        Ogólna procedura drukowania komponentów ......................................................... 609
        Drukowanie w JDK 1.3 ......................................................................................... 614
    15.6. Wielowątkowość w Swing.................................................................................... 615
        Metody klasy SwingUtilities .................................................................................. 618
    15.7. Podsumowanie .................................................................................................. 620

Rozdział 16. Programowanie równoległe z wykorzystaniem wielowątkowości................................621
    16.1. Uruchamianie wątków ........................................................................................ 622
        Metoda 1 — umieszczenie kodu w odrębnym obiekcie wątku .................................. 623
        Metoda 2 — umieszczenie kodu w klasie sterującej,
            implementującej interfejs Runnable ................................................................. 625
    16.2. Sytuacje wyścigu................................................................................................ 627
    16.3. Synchronizacja................................................................................................... 630
        Synchronizacja sekcji kodu ................................................................................... 630
        Synchronizacja całej metody ................................................................................. 631
        Powszechny błąd przy synchronizacji ..................................................................... 631
12       Spis treści

         16.4. Tworzenie metod wielowątkowych........................................................................ 633
         16.5. Metody klasy Thread .......................................................................................... 638
             Konstruktory ....................................................................................................... 638
             Stałe .................................................................................................................. 639
             Metody ............................................................................................................... 640
             Zatrzymywanie wątku ........................................................................................... 644
         16.6. Grupy wątków .................................................................................................... 646
             Konstruktory ....................................................................................................... 646
             Metody ............................................................................................................... 647
         16.7. Wielowątkowa grafika i podwójne buforowanie...................................................... 648
             Odrysowywanie wszystkiego w metodzie paint........................................................ 649
             Zaimplementowanie elementów dynamicznych jako odrębnego komponentu............. 652
             Stworzenie odrębnych procedur bezpośrednio zajmujących się rysowaniem .............. 653
             Nadpisanie metody update i spowodowanie,
                 aby paint wykonywało przyrostowe uaktualnianie............................................... 655
             Wykorzystanie podwójnego buforowania ................................................................ 659
         16.8. Animowanie obrazków ........................................................................................ 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
             Przykład — ogólny klient sieciowy ......................................................................... 679
             Rezultat — połączenie z serwerem FTP ................................................................. 681
         17.2. Analiza składniowa łańcuchów za pomocą klasy StringTokenizer ............................ 682
             Klasa StringTokenizer .......................................................................................... 682
             Konstruktory ....................................................................................................... 682
             Metody ............................................................................................................... 683
             Przykład — interaktywny analizator składniowy....................................................... 683
         17.3. Przykład — klient sprawdzający poprawność adresów poczty elektronicznej ............ 684
         17.4. Przykład — klient sieciowy pobierający dokumenty WWW ...................................... 687
             Klasa pobierająca dokument wskazany przez adres URI na podanym serwerze ......... 688
             Klasa pobierająca dokument wskazany przez adres URL ......................................... 689
             Rezultat wykonania programu CzytnikUrl ................................................................ 690
         17.5. Klasa URL ......................................................................................................... 691
             Pobieranie dokumentów 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
             Przykład — ogólny serwer sieciowy........................................................................ 703
             Rezultat — obsługa połączenia z przeglądarki internetowej ..................................... 706
             Połączenie pomiędzy programami KlientSieciowy i SerwerSieciowy .......................... 706
         17.8. Przykład — prosty serwer HTTP ........................................................................... 707
             Program WielowatkowySerwerEcho........................................................................ 710
         17.9. RMI — zdalne wywoływanie metod ...................................................................... 712
             Etapy tworzenia aplikacji RMI................................................................................ 713
             Prosty przykład .................................................................................................... 714
             Praktyczny przykład — serwer wykonujący całkowanie numeryczne .......................... 718
             Praktyczny przykład czterech wymaganych klas....................................................... 720
Spis treści           13

           Kompilacja i uruchomienie przykładu ..................................................................... 724
           Konfiguracja RMI w dużych sieciach ...................................................................... 725
           Kompilacja i uruchomienie przykładu ..................................................................... 728
           Przykład apletu RMI ............................................................................................. 730
       17.10. Podsumowanie ................................................................................................ 732

Cześć III Programowanie aplikacji działających po stronie serwera                                                                  735
  Rozdział 18. Formularze w języku HTML................................................................................................737
       18.1. Sposób przesyłania danych w języku 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 przełączniki .............................................................................. 755
           Pola wyboru ........................................................................................................ 755
           Przełączniki ......................................................................................................... 756
       18.6 Listy rozwijane oraz zwykłe................................................................................... 757
       18.7. Wysyłanie plików 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 grupujące.......................................................................................... 766
       18.11. Kolejność tabulacji........................................................................................... 768
       18.12. Podsumowanie ................................................................................................ 769

  Rozdział 19. Programy w języku Java po stronie serwera — serwlety............................................771
       19.1. Przewaga serwerów nad tradycyjnymi programami CGI .......................................... 773
           Wydajność .......................................................................................................... 773
           Wygoda............................................................................................................... 773
           Duże możliwości .................................................................................................. 773
           Przenośność ....................................................................................................... 774
           Bezpieczeństwo................................................................................................... 774
           Niski koszt .......................................................................................................... 774
       19.2. Instalacja oraz konfiguracja serwera .................................................................... 775
           Pobieranie oprogramowania obsługującego serwlety oraz JSP.................................. 775
           Dokumentacja API serwletów oraz stron JSP .......................................................... 776
           Określanie klas wykorzystywanych przez kompilator Javy......................................... 777
           Umieszczanie klas w pakietach............................................................................. 777
           Konfiguracja serwera ........................................................................................... 777
           Kompilacja oraz instalacja serwletów .................................................................... 778
           Wywoływanie serwletów........................................................................................ 779
       19.3. Podstawowa struktura serwletu........................................................................... 779
           Serwlet tworzący prosty tekst ............................................................................... 780
           Serwlet tworzący kod HTML .................................................................................. 781
           Proste narzędzia do tworzenia dokumentów HTML.................................................. 783
14       Spis treści

         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. Przykład wykorzystania parametrów inicjujących.................................................... 788
         19.6. Żądanie klienta — dostęp do danych formularza .................................................. 791
             Odczytywanie danych formularza w programach CGI................................................ 791
             Odczytywanie danych formularza w serwletach ....................................................... 791
             Przykład — odczytywanie wartości trzech parametrów............................................. 792
             Filtrowanie danych zapytania ................................................................................ 794
         19.7. Żądanie klienta — nagłówki żądania HTTP ........................................................... 796
             Odczytywanie nagłówków żądania w serwletach...................................................... 796
             Przykład — tworzenie tabeli zawierającej wszystkie nagłówki żądania....................... 798
             Nagłówki żądania protokołu HTTP 1.1.................................................................... 800
             Wysyłanie skompresowanych stron WWW .............................................................. 803
         19.8. Odpowiedniki standardowych zmiennych CGI w przypadku serwletów...................... 805
         19.9. Odpowiedź serwera — kody stanu HTTP .............................................................. 808
             Określanie kodów stanu....................................................................................... 808
             Kody stanu protokołu HTTP 1.1. ........................................................................... 810
             Interfejs użytkownika dla różnych wyszukiwarek internetowych................................. 815
         19.10. Odpowiedź serwera — nagłówki odpowiedzi HTTP............................................... 819
             Ustawianie nagłówków odpowiedzi w serwletach .................................................... 819
             Nagłówki odpowiedzi protokołu HTTP 1.1............................................................... 820
             Trwały stan serwletu oraz automatyczne odświeżanie stron..................................... 826
         19.11. Cookies .......................................................................................................... 834
             Korzyści wynikające ze stosowania cookies ........................................................... 835
             Niektóre problemy z plikami cookies ..................................................................... 836
             Interfejs programistyczny API obsługi plików Cookie w serwletach ............................ 837
             Przykład ustawiania oraz odczytywania cookies ...................................................... 840
             Proste narzędzia do obsługi cookies...................................................................... 844
             Odszukiwanie cookies o określonych nazwach ....................................................... 844
             Tworzenie długotrwałych cookies........................................................................... 845
         19.12. Śledzenie sesji ................................................................................................ 846
             Konieczność śledzenia sesji ................................................................................. 846
             Interfejs API służący do śledzenia sesji.................................................................. 848
             Kończenie sesji ................................................................................................... 851
             Serwlet ukazujący licznik odwiedzin ....................................................................... 852
         19.13. Podsumowanie ................................................................................................ 854

     Rozdział 20. Technologia JavaServer Pages ........................................................................................855
         20.1. Podstawy technologii JSP ................................................................................... 855
         20.2. Korzyści wynikające ze stosowania technologii JSP ............................................... 857
             Porównanie z technologią Active Server Pages (ASP) oraz ColdFusion ...................... 857
             Porównanie z technologią PHP .............................................................................. 857
             Porównanie z serwletami...................................................................................... 858
             Porównanie z technologią Server-Side Includes (SSI) .............................................. 858
             Porównanie z językiem JavaScript ......................................................................... 858
         20.3. Elementy skryptowe JSP ..................................................................................... 859
             Wyrażenia ........................................................................................................... 859
             Skryptlety............................................................................................................ 863
Spis treści           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
         Składnia dyrektyw w postaci zgodnej z XML ........................................................... 875
     20.5. Dołączanie apletów oraz plików w dokumentach JSP............................................. 876
         Dyrektywa include — dołączanie plików w czasie przekształcania strony
              do postaci serwletu ........................................................................................ 876
         Dołączanie plików w trakcie obsługi żądania .......................................................... 879
         Dołączanie apletów.............................................................................................. 880
         Znacznik jsp:fallback............................................................................................ 884
     20.6. Wykorzystywanie w stronach JSP komponentów JavaBeans ................................... 888
         Prosty przykład wykorzystania klasy ziarna ............................................................. 889
         Prosty przykład ustawiania właściwości ziarna........................................................ 891
         Modyfikacja właściwości ziarna ............................................................................. 893
         Współdzielenie ziaren .......................................................................................... 899
     20.7. Definiowanie własnych znaczników JSP................................................................ 902
         Komponenty tworzące bibliotekę znaczników.......................................................... 903
         Definiowanie prostego znacznika .......................................................................... 906
         Przyporządkowanie znacznikom atrybutów.............................................................. 910
         Atrybuty znaczników — plik deskryptora biblioteki znaczników ................................. 911
         Dołączanie zawartości znacznika........................................................................... 913
         Opcjonalne dołączanie zawartości znacznika .......................................................... 917
         Modyfikacja zawartości znacznika ......................................................................... 920
         Znaczniki zagnieżdżone ........................................................................................ 926
     20.8. Integrowanie serwletów ze stronami JSP .............................................................. 932
         Przekazywanie żądań ........................................................................................... 934
         Przykład — internetowe biuro podróży ................................................................... 937
         Przekazywanie żądań ze stron JSP ........................................................................ 943
     20.9. Podsumowanie .................................................................................................. 944

Rozdział 21. Wykorzystywanie apletów w charakterze interfejsu programów
działających po stronie serwera...........................................................................................................945
     21.1. Wysyłanie danych przy użyciu metody GET i wyświetlanie wynikowej strony.............. 946
     21.2. Interfejs użytkownika programu wyszukującego informacje
              w wielu różnych wyszukiwarkach internetowych................................................. 947
     21.3. Wykorzystywanie metody GET oraz przetwarzanie wyników
              w sposób bezpośredni (tunelowanie HTTP)....................................................... 951
         Odczytywanie danych binarnych oraz danych tekstowych ......................................... 952
         Odczytywanie struktur danych zachowanych przy użyciu serializacji .......................... 953
     21.4. Przeglądarka żądań wysyłanych do serwera, używająca serializacji obiektów
              oraz tunelowania HTTP ................................................................................... 955
16        Spis treści

          21.5. Wysyłanie danych przy użyciu metody POST
                   i przetwarzanie wyników wewnątrz apletu (tunelowanie HTTP) ............................ 962
          21.6. Aplet wysyłający dane przy użyciu 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 czynności konieczne do wykonania w celu zastosowania JDBC ........... 972
              Załadowanie sterownika JDBC .............................................................................. 972
              Określanie adresu URL służącego do nawiązania połączenia ................................... 973
              Ustanawianie połączenia z bazą danych ................................................................ 974
              Tworzenie instrukcji SQL ...................................................................................... 974
              Wykonywanie zapytania ........................................................................................ 975
              Przetwarzanie wyników zapytania .......................................................................... 975
              Zamykanie połączenia.......................................................................................... 976
          22.2. Prosty przykład wykorzystujący JDBC.................................................................... 976
          22.3. Kilka narzędzi JDBC ........................................................................................... 981
          22.4. Stosowanie utworzonych narzędzi JDBC ............................................................... 989
          22.5. Interaktywna przeglądarka zapytań ...................................................................... 993
              Kod przeglądarki zapytań...................................................................................... 995
          22.6. Zapytania prekompilowane ................................................................................. 999
          22.7. Podsumowanie ................................................................................................ 1003

     Rozdział 23. Przetwarzanie dokumentów XML w języku Java......................................................... 1005
          23.1. Analiza dokumentów XML przy użyciu modelu DOM (poziom 2)............................. 1006
               Instalacja oraz konfiguracja ................................................................................ 1007
               Analiza dokumentu ............................................................................................ 1008
          23.2. Przykład wykorzystania modelu DOM — wyświetlenie dokumentu XML
                   w postaci obiektu JTree................................................................................ 1009
          23.3. Przetwarzanie dokumentów XML za pomocą interfejsu SAX 2.0............................ 1020
               Instalacja oraz konfiguracja ................................................................................ 1020
               Analiza dokumentu ............................................................................................ 1021
          23.4. Pierwszy przykład użycia interfejsu SAX — wyświetlanie struktury dokumentu XML .... 1023
          23.5. Drugi przykład użycia interfejsu SAX — zliczanie zamówień książek ...................... 1029
          23.6. Przekształcanie dokumentu XML za pomocą transformacji XSLT .......................... 1033
               Instalacja oraz konfiguracja ................................................................................ 1034
               Transformacja ................................................................................................... 1035
          23.7. Pierwszy przykład XSLT — edytor dokumentów XSLT ........................................... 1039
          23.8. Drugi przykład XSLT — własny 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 zgodności z wieloma przeglądarkami ................................................. 1062
          24.2. Monitorowanie zdarzeń użytkownika .................................................................. 1064
          24.3. Poznawanie składni JavaScript.......................................................................... 1065
              Dynamiczne określanie typu ............................................................................... 1065
              Deklarowanie funkcji.......................................................................................... 1066
              Klasy i obiekty................................................................................................... 1067
              Tablice ............................................................................................................. 1071
Spis treści           17

     24.4. Wykorzystanie JavaScript do przekształcania stron WWW .................................... 1072
         Dostosowanie do rozmiaru okna przeglądarki....................................................... 1073
         Sprawdzanie, jakie moduły rozszerzające są dostępne.......................................... 1075
     24.5. Wykorzystanie JavaScript do umieszczenia na stronie elementów dynamicznych ... 1077
         Dynamiczna zmiana obrazków............................................................................. 1077
         Przemieszczanie warstw ..................................................................................... 1084
     24.6. Wykorzystanie JavaScript do sprawdzania poprawności formularzy ....................... 1087
         Sprawdzanie pojedynczych wartości .................................................................... 1088
         Sprawdzanie wartości przed odesłaniem formularza ............................................. 1090
     24.7. Wykorzystanie JavaScript do zapisywania i sprawdzania
             znaczników kontekstu klienta........................................................................ 1094
     24.8. Wykorzystanie JavaScript do współdziałania z ramkami ....................................... 1098
         Pokierowanie ramką, aby wyświetliła podany URL................................................. 1099
         Sprawianie aby ramka była aktywna .................................................................... 1102
     24.9. Wywoływanie Javy z poziomu JavaScript ............................................................. 1102
         Bezpośrednie wywoływanie metod Javy................................................................ 1103
         Wykorzystanie apletów do wykonywania operacji dla JavaScript ............................. 1104
         Sterowanie apletami przy użyciu JavaScript.......................................................... 1107
     24.10. Dostęp do obiektów JavaScript z poziomu Javy................................................. 1110
         Przykład — dopasowanie koloru tła apletu do koloru strony .................................. 1112
         Przykład — aplet sterujący wartościami formularza HTML ..................................... 1113
         Metody klasy JSObject ....................................................................................... 1122
     24.11. Podsumowanie .............................................................................................. 1123

Rozdział 25. Krótki podręcznik JavaScript ......................................................................................... 1125
     25.1. Obiekt Array..................................................................................................... 1125
         Konstruktory ..................................................................................................... 1126
         Właściwości ...................................................................................................... 1126
         Metody ............................................................................................................. 1126
         Zdarzenia.......................................................................................................... 1129
     25.2. Obiekt Button .................................................................................................. 1129
         Właściwości ...................................................................................................... 1129
         Metody ............................................................................................................. 1129
         Zdarzenia.......................................................................................................... 1130
     25.3. Obiekt Checkbox.............................................................................................. 1130
         Właściwości ...................................................................................................... 1131
         Metody ............................................................................................................. 1131
         Zdarzenia.......................................................................................................... 1131
     25.4. Obiekt Date ..................................................................................................... 1132
         Konstruktory ..................................................................................................... 1132
         Właściwości ...................................................................................................... 1132
         Metody ............................................................................................................. 1133
         Zdarzenia.......................................................................................................... 1135
     25.5. Obiekt Document ............................................................................................. 1135
         Właściwości ...................................................................................................... 1135
         Metody ............................................................................................................. 1137
         Zdarzenia.......................................................................................................... 1138
     25.6. Obiekt Element ................................................................................................ 1138
         Właściwości ...................................................................................................... 1138
         Metody ............................................................................................................. 1139
         Zdarzenia.......................................................................................................... 1140
18   Spis treści

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

25.20. Obiekt Navigator ............................................................................................ 1159
    Właściwości ...................................................................................................... 1159
    Metody ............................................................................................................. 1161
    Zdarzenia.......................................................................................................... 1161
25.21. Obiekt Number .............................................................................................. 1161
    Konstruktor....................................................................................................... 1162
    Właściwości ...................................................................................................... 1162
    Metody ............................................................................................................. 1162
    Zdarzenia.......................................................................................................... 1164
25.22. Obiekt Object................................................................................................. 1164
    Konstruktory ..................................................................................................... 1164
    Właściwości ...................................................................................................... 1164
    Metody ............................................................................................................. 1165
    Zdarzenia.......................................................................................................... 1165
25.23. Obiekt Option ................................................................................................ 1165
    Konstruktory ..................................................................................................... 1165
    Właściwości ...................................................................................................... 1166
    Metody ............................................................................................................. 1166
    Zdarzenia.......................................................................................................... 1166
25.24. Obiekt Password............................................................................................ 1166
    Właściwości ...................................................................................................... 1167
    Metody ............................................................................................................. 1167
    Zdarzenia.......................................................................................................... 1167
25.25. Obiekt Plugin ................................................................................................. 1168
    Właściwości ...................................................................................................... 1168
    Metody ............................................................................................................. 1169
    Zdarzenia.......................................................................................................... 1169
25.26. Obiekt Radio ................................................................................................. 1169
    Właściwości ...................................................................................................... 1169
    Metody ............................................................................................................. 1170
    Zdarzenia.......................................................................................................... 1170
25.27. Obiekt RegExp ............................................................................................... 1170
    Konstruktory ..................................................................................................... 1170
    Właściwości ...................................................................................................... 1172
    Metody ............................................................................................................. 1173
    Zdarzenia.......................................................................................................... 1174
    Wzorce specjalne w wyrażeniach regularnych ....................................................... 1174
25.28. Obiekt Reset ................................................................................................. 1174
    Właściwości ...................................................................................................... 1174
    Metody ............................................................................................................. 1174
    Zdarzenia.......................................................................................................... 1176
25.29. Obiekt Screen................................................................................................ 1176
    Właściwości ...................................................................................................... 1177
    Metody ............................................................................................................. 1177
    Zdarzenia.......................................................................................................... 1177
25.30. Obiekt Select................................................................................................. 1177
    Właściwości ...................................................................................................... 1178
    Metody ............................................................................................................. 1179
    Zdarzenia.......................................................................................................... 1179
20        Spis treści

          25.31. Obiekt String ................................................................................................. 1179
              Konstruktor....................................................................................................... 1180
              Właściwości ...................................................................................................... 1180
              Metody ............................................................................................................. 1180
              Zdarzenia.......................................................................................................... 1184
          25.32. Obiekt Submit ............................................................................................... 1184
              Właściwości ...................................................................................................... 1184
              Metody ............................................................................................................. 1185
              Zdarzenia.......................................................................................................... 1185
          25.33. Obiekt Text.................................................................................................... 1186
              Właściwości ...................................................................................................... 1186
              Metody ............................................................................................................. 1186
              Zdarzenia.......................................................................................................... 1187
          25.34. Obiekt Textarea ............................................................................................. 1187
              Właściwości ...................................................................................................... 1187
              Metody ............................................................................................................. 1188
              Zdarzenia.......................................................................................................... 1188
          25.35. Obiekt Window............................................................................................... 1189
              Właściwości ...................................................................................................... 1189
              Metody ............................................................................................................. 1192
              Zdarzenia.......................................................................................................... 1196
              Przykład użycia metody open .............................................................................. 1198
          25.36. Podsumowanie .............................................................................................. 1200


Dodatki                                                                                                                                                  1201
     Skorowidz .............................................................................................................................................. 1203
Wykorzystywanie apletów
       w charakterze interfejsu
       programów działających
         po stronie serwera
W tym rozdziale:
  n   Wysyłanie danych przy u yciu metody GET i wyświetlanie wyników
      w przeglądarce
  n   Wysyłanie danych przy u yciu metody GET i przetwarzanie wyników wewnątrz
      apletu (tunelowanie HTTP)
  n   Wykorzystanie serializacji obiektów do wymiany struktur danych wysokiego
      poziomu pomiędzy apletami a serwletami
  n   Wysyłanie danych przy u yciu metody POST i przetwarzanie wyników wewnątrz
      apletu (tunelowanie HTTP)
  n   Pomijanie serwera HTTP podczas komunikacji z programem po stronie serwera

Omówione w rozdziale 18. formularze HTTP stanowią prosty, lecz ograniczony sposób
pobierania danych wejściowych od u ytkownika i przekazywania ich do serwletów lub
programów CGI. Niekiedy jednak wymagane jest zastosowanie bardziej skomplikowanego
interfejsu u ytkownika. Aplety umo liwiają większą kontrolę na rozmiarem, kolorem oraz
czcionką elementów graficznego interfejsu u ytkownika, jak równie udostępniają więcej
mo liwości obsługiwanych przez dostarczone obiekty (paski postępu, przewijania, rysowa-
nie linii, okna modalne itp.), pozwalają śledzić zdarzenia myszy oraz klawiatury, obsługi-
wać definiowane własne formularze (przeciągane ikony, klawiatury do wybierania nume-
rów itp.), a tak e pozwalają wysłać ądanie pochodzące od jednego u ytkownika do wielu
programów działających po stronie serwera. Te dodatkowe mo liwości mają jednak swoją
946   Część III n Programowanie aplikacji działających po stronie serwera

      cenę, poniewa stworzenie interfejsu u ytkownika w języku Java pociąga za sobą więcej
      wysiłku, ni ma to miejsce w przypadku formularzy HTML, szczególnie wtedy, gdy inter-
      fejs zawiera tekst formatowany. Dlatego te wybór pomiędzy formularzami HTML a aple-
      tami zale y od rodzaju tworzonej aplikacji.

      W formularzach HTML ądania typu )'6 oraz 2156 obsługiwane są w prawie ten sam sposób.
      Wszystkie elementy interfejsu u ytkownika słu ące do wprowadzania danych są identyczne.
      Zmieniana jest jedynie wartość atrybutu /'6*1& znacznika (14/. Natomiast w przypadku
      apletów istnieją trzy ró ne podejścia do problemu. Pierwsze z nich, opisane w podrozdziale
      21.1, polega na naśladowaniu przez aplety formularzy HTML u ywających metody )'6, co
      powoduje wysłanie danych do serwera właśnie przy u yciu tej metody i wyświetlenie wyni-
      ków w przeglądarce. W podrozdziale 21.2, „Interfejs u ytkownika programu wyszukującego
      informacje w wielu ró nych wyszukiwarkach internetowych”, przedstawiony zostanie przy-
      kład tego rodzaju podejścia. Druga metoda zostanie opisana w podrozdziale 21.3. i polega
      na wykorzystaniu apletu wysyłającego dane do serwletu, a następnie samodzielnie przetwa-
      rzającego uzyskane wyniki. Przykład prezentujący zastosowanie tej metody przedstawiony
      będzie w podrozdziale 21.4, „Przeglądarka ądań wysyłanych do serwera u ywająca seria-
      lizacji obiektów oraz tunelowania HTTP”. Trzecie podejście, opisane w podrozdziale 21.5,
      polega na wykorzystaniu apletu wysyłającego dane do serwletu przy u yciu metody POST,
      a następnie samodzielnie przetwarzającego uzyskane wyniki. Przykład tej metody zamiesz-
      czony jest w podrozdziale 21.6, „Aplet wysyłający dane przy u yciu metody POST”. W pod-
      rozdziale 21.7. przedstawiony zostanie sposób całkowitego pominięcia przez aplet serwera
      HTTP i bezpośredniej komunikacji z programem działającym na tym samym komputerze,
      z którego pobrany został aplet.

      W rozdziale tym zało ono, e Czytelnik w stopniu podstawowym zna sposoby tworzenia
      podstawowych apletów (rozdział 9.) i dlatego skoncentrowano się jedynie na technikach
      umo liwiających komunikację apletów z programami działającymi po stronie serwera.



21.1. Wysyłanie danych przy u yciu metody GET
i wyświetlanie wynikowej strony
      Metoda UJQY&QEWOGPV nakazuje przeglądarce wyświetlenie dokumentu umieszczonego pod
      określonym adresem URL. Dzięki dołączeniu do adresu URL programu danych, umiesz-
      czonych po znaku zapytania (?), mo liwe jest przesłanie ich przy u yciu metody )'6 do
      serwletu lub innego programu CGI. Dzięki temu w celu wysłania danych z apletu konieczne
      jest jedynie dołączenie ich do łańcucha znakowego, słu ącego do tworzenia adresu URL,
      a następnie w normalny sposób utworzenie obiektu URL i wywołanie metody UJQY&QEW
      OGPV. Poni ej przedstawiony został prosty szablon, pozwalający na zastosowanie tej metody
      w apletach. Zakłada on, e DCQY[#FTGU74. zawiera łańcuch znakowy, reprezentujący adres
      URL programu po stronie serwera, zaś zmienna RGYPGCPG zawiera informacje, które mają
      zostać wysłane wraz z ądaniem.
        VT[ ]
          74. CFTGU2TQITCOW  PGY 74.
DCQY[#FTGU74. 
 ! 
 RGYPGCPG
          IGV#RRNGV%QPVGZV
UJQYQEWOGPV
CFTGU2TQITCOW
        _ ECVEJ 
/CNHQTOGF74.'ZEGRVKQP OWG ]  _
Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu...   947

   Kiedy dane przesyłane są przez przeglądarkę, zostaną zakodowane przy u yciu metody
   URL encode, co oznacza, e spacje konwertowane są na znaki plusa (
), zaś wszystkie nie
   alfanumeryczne znaki zmieniane są na znak procenta ( ), po którym występują dwie cyfry
   szesnastkowe, określające kod znaku w u ywanym zestawie. Zostało to dokładnie opisane
   w podrozdziale 18.2, „Znacznik FORM”. W poprzednim przykładzie zało ono, e łańcuch
   znakowy RGYPGCPG jest ju zakodowany poprawnie. W przeciwnym wypadku wystąpiłby
   błąd działania programu. W JDK 1.1 oraz w wersjach późniejszych występuje specjalna
   klasa o nazwie 74.'PEQFGT, posiadająca zdefiniowaną statyczną metodę o nazwie GPEQFG,
   której wywołanie powoduje wykonanie omówionego kodowania. Jeśli więc aplet komuni-
   kuje się z programem po stronie serwera, który normalnie otrzymywałby dane )'6 z for-
   mularzy HTML, aplet musi zakodować ka dą przesyłaną wartość, lecz musi równie u yć
   znaku równości () pomiędzy ka dą nazwą zmiennej a stowarzyszoną z nią wartością, jak
   równie znaku ( ) w celu oddzielenia od siebie ka dej takiej pary. Dlatego te nie mo na
   wykorzystać wspomnianej metody 74.'PEQFGTGPEQFG
RGYPGCPG dla całego łańcucha
   znakowego zawierającego dane (wówczas zostałyby zakodowane równie te znaki specjal-
   ne — przyp. tłum.), lecz w zamian selektywnie zakodować ka dą część pary. Czynność ta
   mo e zostać wykonana na przykład w poni szy sposób:
     5VTKPI RGYPGCPG 
     PCYC 
  
 74.'PEQFGTGPEQFG
YCTVQUE 
       
     PCYC 
  
 74.'PEQFGTGPEQFG
YCTVQUE 
       
     
     PCYC0 
  
 74.'PEQFGTGPEQFG
YCTVQUE0
     VT[ ]
       74. CFTGU2TQITCOW  PGY 74.
DCQY[#FTGU74. 
 ! 
 RGYPGCPG
       IGV#RRNGV%QPVGZV
UJQYQEWOGPV
CFTGU2TQITCOW
     _ ECVEJ 
/CNHQTOGF74.'ZEGRVKQP OWG ]  _

   Cały przykład zostanie przedstawiony w kolejnym podrozdziale.



21.2. Interfejs u ytkownika programu
wyszukującego informacje w wielu ró nych
wyszukiwarkach internetowych
   Na listingu 21.1 przedstawiony został aplet tworzący pole tekstowe, słu ące do pobierania
   danych wejściowych od u ytkownika. Po zatwierdzeniu danych, aplet koduje je u ywając
   metody URL-encode i tworzy trzy ró ne adresy URL, z dołączanymi do nich danymi prze-
   syłanymi za pomocą metody )'6. Ka dy z nich przeznaczony jest dla innej wyszukiwarki
   internetowej: Google, Infoseek oraz Lycos. Następnie, w celu nakazania przeglądarce wy-
   świetlenia rezultatów wyszukiwania w trzech ró nych obszarach ramki, aplet u ywa meto-
   dy UJQYQEWOGPV. Formularze HTML nie mogą zostać wykorzystane do wykonania tego ro-
   dzaju zadania, poniewa mogą one przesyłać dane jedynie do pojedynczego adresu URL.
   Na listingu 21.2 przedstawiona została klasa o nazwie 2CTCOGVT[9[UWMKYCPKC, wykorzy-
   stywana przez aplet do tworzenia określonych adresów URL, niezbędnych do przekierowa-
   nia ądań do ró nych wyszukiwarek internetowych. Jak wspomniano w rozdziale 19., klasa
   2CTCOGVT[9[UWMKYCPKC mo e być równie wykorzystywana przez serwlety. Wyniki dzia-
   łania apletu przedstawiają rysunki 21.2 – 21.2.
948    Część III n Programowanie aplikacji działających po stronie serwera

       Na listingu 21.3 zaprezentowany został główny dokument HTML, zaś na listingu 21.4 do-
       kument HTML wykorzystywany do osadzenia apletu. Zainteresowanych dokładną budową
       tych trzech niewielkich plików HTML, słu ących do utworzenia początkowej zawartości
       trzech komórek ramki, ukazanych na rysunku 21.1, odsyłamy do kodu źródłowego umiesz-
       czonego w archiwum znajdującym się po adresem: ftp://ftp.helion.pl/przyklady/serinp.zip.

Listing 21.1. ApletWyszukiwania.java
          KORQTV   LCXCCRRNGV#RRNGV
          KORQTV   LCXCCYV
KORQTV   LCXCCYVGXGPV
KORQTV   LCXCPGV
Serwisy internetowe. Programowanie
#RNGV QFE[VWLæE[ YCTVQ è WOKGUEQPæ Y RQNW GF[E[LP[O
C PCUVúRPKG VYQTæE[ RT[ LGL W [EKW VT[ TÎ PG CFTGU[ 74.
CYKGTCLæEG QUCFQPG FCPG )'6 RQ LGFP[O FNC Y[UWMKYCTGM )QQING +PHQUGGM QTC .[EQU
0CUVúRPKG CFTGU[ VG RTGMC[YCPG Uæ FQ RTGINæFCTMK
Y[ YKGVNCLæEGL Y[PKMK Y[UWMKYCPKC Y VTGEJ QFFKGNP[EJ TCOMCEJ
YTÎè WYCIú G Y[M G HQTOWNCTG *6/. PKG Uæ Y UVCPKG Y URQUÎD CWVQOCV[EP[
Y[U[ Cè YKGNW LGFPQEGUP[EJ CR[VC
2
-QF[ CEGTRPKúVG  RQNUMKGL GF[ELK
MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
9[FCYPKEVYQ *GNKQP )NKYKEG
HVRHVRJGNKQPRNRT[MNCF[UGTKPRKR
/CTV[ *CNN CPF .CTT[ $TQYP
RWDNKE ENCUU #RNGV9[UWMKYCPKC GZVGPFU #RRNGV
                                    KORNGOGPVU #EVKQP.KUVGPGT ]
            RTKXCVG 6GZV(KGNF RQNGCR[VCPKC
            RTKXCVG $WVVQP RT[EKUMCVYKGTFCLCE[

            RWDNKE XQKF KPKV
 ]
              UGV$CEMITQWPF
%QNQTYJKVG
              UGV(QPV
PGY (QPV
 5GTKH  (QPV$1. 
              CFF
PGY .CDGN
 2QUWMKYCP[ EKæI 
              RQNGCR[VCPKC  PGY 6GZV(KGNF

              RQNGCR[VCPKCCFF#EVKQP.KUVGPGT
VJKU
              CFF
RQNGCR[VCPKC
              RT[EKUMCVYKGTFCLCE[  PGY $WVVQP
 9[ NKL FQ Y[UWMKYCTGM 
              RT[EKUMCVYKGTFCLCE[CFF#EVKQP.KUVGPGT
VJKU
              CFF
RT[EKUMCVYKGTFCLCE[
            _
Serwisy internetowe. Programowanie
9[U[ C FCPG Y RT[RCFMW YEK PKúEKC RT[EKUMW $ NWD$
W [EKC MNCYKUC 4GVWTP Y RQNW VGMUVQY[O
RWDNKE XQKF CEVKQP2GTHQTOGF
#EVKQP'XGPV GXGPV ]
              5VTKPI CR[VCPKG  74.'PEQFGTGPEQFG
RQNGCR[VCPKCIGV6GZV

              2CTCOGVT[9[UWMKYCPKC =? INQYPG#FTGU[  2CTCOGVT[9[UWMKYCPKCRQDKGT)NQYPG#FTGU[

               2QOKPKúV[ QUVC CFTGU *QV$QV 
QUVCVPK YRKU RQPKGYC Y EGNW Y[ YKGVNGPKC Y[PKMÎY
               Y[UWMKYCTMC VC W [YC MQFW Y LG[MW ,CXC5ETKRV NCVGIQ VG RQPK GL Y[UVúRWLG
              Y[TC GPKG NGPIVJ 
              HQT
KPV K KINQYPG#FTGU[NGPIVJ K

 ]
                VT[ ]

More Related Content

PDF
Tworzenie stron WWW. Kurs
PDF
JavaScript i DHTML. Receptury
PDF
Tworzenie stron WWW w praktyce. Wydanie II
PDF
Tworzenie stron WWW. Kurs. Wydanie II
PDF
Po prostu FrontPage 2003 PL
PDF
HTML i XHTML dla każdego
PDF
Kurs tworzenia stron internetowych
PDF
Po prostu PHP. Techniki zaawansowane
Tworzenie stron WWW. Kurs
JavaScript i DHTML. Receptury
Tworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW. Kurs. Wydanie II
Po prostu FrontPage 2003 PL
HTML i XHTML dla każdego
Kurs tworzenia stron internetowych
Po prostu PHP. Techniki zaawansowane

What's hot (20)

PDF
Contribute 2. Szybki start
PDF
Dreamweaver MX. Ćwiczenia
PDF
Adobe Dreamweaver CS3/CS3 PL. Oficjalny podręcznik
PDF
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PDF
Java w komercyjnych usługach sieciowych. Księga eksperta
PDF
Pajączek 5 NxG
PDF
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PDF
122 sposoby na OpenOffice.ux.pl 2.0
PDF
JBuilder i bazy danych
PDF
Java. Usługi WWW. Vademecum profesjonalisty
PDF
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PDF
Access 2002. Tworzenie baz danych
PDF
HTML w 10 prostych krokach
PDF
100 sposobów na Access
PDF
Po prostu HTML 4. Wydanie III
PDF
Dreamweaver MX
PDF
Macromedia Dreamweaver 8. Oficjalny podręcznik
PDF
Po prostu Word 2003 PL
PDF
Adobe PageMaker 7.0. Oficjalny podręcznik
PDF
C++Builder 6 i bazy danych
Contribute 2. Szybki start
Dreamweaver MX. Ćwiczenia
Adobe Dreamweaver CS3/CS3 PL. Oficjalny podręcznik
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
Java w komercyjnych usługach sieciowych. Księga eksperta
Pajączek 5 NxG
PHP i MySQL. Dynamiczne strony WWW. Szybki start
122 sposoby na OpenOffice.ux.pl 2.0
JBuilder i bazy danych
Java. Usługi WWW. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
Access 2002. Tworzenie baz danych
HTML w 10 prostych krokach
100 sposobów na Access
Po prostu HTML 4. Wydanie III
Dreamweaver MX
Macromedia Dreamweaver 8. Oficjalny podręcznik
Po prostu Word 2003 PL
Adobe PageMaker 7.0. Oficjalny podręcznik
C++Builder 6 i bazy danych
Ad

Similar to Serwisy internetowe. Programowanie (20)

PDF
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
PDF
ABC tworzenia stron WWW. Wydanie II
PDF
ABC języka HTML i XHTML
PDF
AJAX w mgnieniu oka
PDF
HTML, XHTML i CSS. Biblia
PDF
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
PDF
Ajax, JavaScript i PHP. Intensywny trening
PDF
Tworzenie stron WWW. Ilustrowany przewodnik
PDF
PHP5, Apache i MySQL. Od podstaw
PDF
Tworzenie stron WWW w praktyce
PDF
JavaScript dla każdego
PDF
XHTML i CSS. Dostępne witryny internetowe
PDF
Projektowanie serwisów WWW. Standardy sieciowe
PDF
Head First Servlets & JSP. Edycja polska
PDF
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PDF
ABC tworzenia stron WWW
PDF
JavaScript. Zaawansowane programowanie
PDF
PDF
Tworzenie stron WWW. Biblia. Wydanie II
PDF
Tworzenie stron WWW. Nieoficjalny podręcznik
HTML, XHTML i CSS. Nowoczesne tworzenie stron WWW
ABC tworzenia stron WWW. Wydanie II
ABC języka HTML i XHTML
AJAX w mgnieniu oka
HTML, XHTML i CSS. Biblia
CSS i Ajax. Strony WWW zgodne ze standardami sieciowymi W3C
Ajax, JavaScript i PHP. Intensywny trening
Tworzenie stron WWW. Ilustrowany przewodnik
PHP5, Apache i MySQL. Od podstaw
Tworzenie stron WWW w praktyce
JavaScript dla każdego
XHTML i CSS. Dostępne witryny internetowe
Projektowanie serwisów WWW. Standardy sieciowe
Head First Servlets & JSP. Edycja polska
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
ABC tworzenia stron WWW
JavaScript. Zaawansowane programowanie
Tworzenie stron WWW. Biblia. Wydanie II
Tworzenie stron WWW. Nieoficjalny podręcznik
Ad

More from Wydawnictwo Helion (20)

PDF
Tworzenie filmów w Windows XP. Projekty
PDF
Blog, więcej niż internetowy pamiętnik
PDF
Access w biurze i nie tylko
PDF
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
PDF
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
PDF
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
PDF
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
PDF
Makrofotografia. Magia szczegółu
PDF
Windows PowerShell. Podstawy
PDF
Java. Efektywne programowanie. Wydanie II
PDF
JavaScript. Pierwsze starcie
PDF
PowerPoint 2007 PL. Seria praktyk
PDF
Excel 2007 PL. Seria praktyk
PDF
Access 2007 PL. Seria praktyk
PDF
Word 2007 PL. Seria praktyk
PDF
Serwisy społecznościowe. Budowa, administracja i moderacja
PDF
AutoCAD 2008 i 2008 PL
PDF
Bazy danych. Pierwsze starcie
PDF
Inventor. Pierwsze kroki
PDF
Serwer SQL 2008. Administracja i programowanie
Tworzenie filmów w Windows XP. Projekty
Blog, więcej niż internetowy pamiętnik
Access w biurze i nie tylko
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Makrofotografia. Magia szczegółu
Windows PowerShell. Podstawy
Java. Efektywne programowanie. Wydanie II
JavaScript. Pierwsze starcie
PowerPoint 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
Serwisy społecznościowe. Budowa, administracja i moderacja
AutoCAD 2008 i 2008 PL
Bazy danych. Pierwsze starcie
Inventor. Pierwsze kroki
Serwer SQL 2008. Administracja i programowanie

Serwisy internetowe. Programowanie

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Serwisy internetowe. Programowanie KATALOG KSI¥¯EK Autorzy: Marty Hall, Larry Brown T³umaczenie: Szymon Kobalczyk, KATALOG ONLINE Marek Pa³czyñski, Rafa³ Szpoton ISBN: 83-7361-155-X ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Core Web Programming, 2nd Edition Format: B5, stron: 1254 Przyk³ady na ftp: 1211 kB TWÓJ KOSZYK DODAJ DO KOSZYKA Kompendium wiedzy dla profesjonalnych programistów serwisów internetowych. Ksi¹¿ka zawiera komplet informacji niezbêdnych twórcom zaawansowanych aplikacji sieciowych i opisuje: HTML 4, Java Standard Edition 1.3, serwlety, JavaServer Pages CENNIK I INFORMACJE i wiele innych technologii. „Serwisy internetowe. Programowanie” ³¹czy te technologie pokazuj¹c, jak przy ich pomocy tworzyæ profesjonalne systemy. ZAMÓW INFORMACJE HTML 4: Dog³êbny, praktyczny opis struktury dokumentu HTML, jego elementów, ramek O NOWO CIACH i styli kaskadowych. Java 2: Podstawy sk³adni, projektowanie zorientowane obiektowo, aplety, tworzenie ZAMÓW CENNIK animacji, narzêdzie Java PlugIn, tworzenie interfejsu u¿ytkownika (Swing), Java 2D API, aplikacje wielow¹tkowe, programowanie sieciowe, korzystanie z baz danych i jeszcze CZYTELNIA wiêcej. Technologie serwerowe Javy: Serwlety, JSP, XML, JDBC – fundamentalne technologie FRAGMENTY KSI¥¯EK ONLINE umo¿liwiaj¹ce budowê aplikacji w Javie. Tematy zaawansowane dotycz¹ tworzenia w³asnych bibliotek znaczników JSP, ³¹czenia serwletów z JSP (MVC), tworzenie puli po³¹czeñ do baz danych, SAX, DOM i XSLT. Dok³adnie omówiono tak¿e HTTP 1.1. JavaScript: Dynamiczne tworzenie zawarto ci stron WWW, ledzenie zachowania u¿ytkownika, sprawdzanie poprawno ci danych w formularzach HTML. Do³¹czono podrêczny skorowidz komend. Pierwsze wydanie tej ksi¹¿ki jest u¿ywane jako podrêcznik na takich uczelniach jak MIT, Standford, UC Berkeley, UCLA, Princeton i John Hopkins. Ksi¹¿ka, któr¹ trzymasz w rêku, zosta³a zaktualizowana i uzupe³niona o najnowsze technologie oraz towarzysz¹ce im przyk³ady gotowego kodu. • wiatowy bestseller — aktualne kompendium dla zaawansowanych programistów Wydawnictwo Helion serwisów WWW ul. Chopina 6 • Dog³êbny opis HTML 4, CSS, Javy 2, serwletów, JavaServer Pages i XML 44-100 Gliwice • Przyk³ady kodu u¿ywanego przez profesjonalistów tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści O Autorach...................................................................................................................................................21 Wstęp.......................................................................................................................................................... 23 Część I Język HTML 29 Rozdział 1. Projektowanie stron WWW w HTML 4.0................................................................................. 31 1.1. Język 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 dokumentów HTML ............................................................... 38 Szablon dokumentu HTML...................................................................................... 39 Deklaracja DOCTYPE.............................................................................................. 39 1.5. Nagłówek HEAD — ogólne informacje o stronie ........................................................ 41 Obowiązkowy element nagłówka HEAD .................................................................... 42 Opcjonalne elementy nagłówka HEAD...................................................................... 42 1.6. Sekcja BODY — część główna dokumentu ............................................................... 47 1.7. Podsumowanie ...................................................................................................... 50 Rozdział 2. Elementy blokowe w HTML 4.0................................................................................................51 2.1. Nagłówki ............................................................................................................... 52 2.2. Podstawowe bloki tekstu ........................................................................................ 53 Podstawowy akapit ................................................................................................ 54 Akapit zachowujący znaki rozdzielające.................................................................... 55 Blok cytatu............................................................................................................ 56 Adresy .................................................................................................................. 56 2.3. Listy numerowane, wypunktowane i wcięte............................................................... 57 Listy numerowane ................................................................................................. 57 Listy wypunktowane ............................................................................................... 59 Listy definicji ......................................................................................................... 61 2.4. Tabele .................................................................................................................. 62 Podstawowa struktura tabel ................................................................................... 62 Definiowanie wierszy tabeli..................................................................................... 66 Nagłówki kolumn i komórki danych.......................................................................... 67 Grupowanie zawartości tabeli ................................................................................. 70 2.5. Formularze ............................................................................................................ 72 2.6. Pozostałe elementy blokowe ................................................................................... 73 2.7. Podsumowanie ...................................................................................................... 75
  • 3. 4 Spis treści Rozdział 3. Elementy tekstowe w HTML 4.0 ............................................................................................. 77 3.1. Fizyczne style znaków............................................................................................. 77 3.2. Logiczne style znaków ............................................................................................ 82 3.3. Tworzenie łączy hipertekstowych ............................................................................. 84 3.4. Umieszczanie ilustracji ........................................................................................... 87 Animowane obrazki GIF .......................................................................................... 87 Element IMG ......................................................................................................... 88 3.5. Mapy obrazu interpretowane po stronie klienta......................................................... 91 3.6. Osadzenie innych obiektów w dokumentach ............................................................. 94 Osadzanie apletów Javy ......................................................................................... 94 Osadzanie plików w formatach audio, wideo i innych przez moduły rozszerzające ........ 96 Osadzanie kontrolek ActiveX................................................................................... 97 Wyświetlanie ruchomych szyldów ............................................................................ 99 3.7. Sterowanie łamaniem tekstu ................................................................................ 100 3.8. Podsumowanie .................................................................................................... 101 Rozdział 4. Ramki ......................................................................................................................................103 4.1. Szablon dokumentu ramek ................................................................................... 104 4.2. Definiowanie układu ramek................................................................................... 105 4.3. Definiowanie zawartości komórek ramek................................................................ 109 Przykłady............................................................................................................. 111 4.4. Odwoływanie się do komórek ramek ...................................................................... 112 Predefiniowane nazwy ramek ................................................................................ 115 4.5. Rozwiązywanie najczęstszych problemów z ramkami ............................................... 115 Tworzenie zakładek do stron z ramkami................................................................. 116 Drukowanie stron z ramkami ................................................................................ 116 Uaktualnianie wielu ramek równocześnie............................................................... 117 Chronienie dokumentu przed umieszczeniem w ramce............................................ 120 Tworzenie pustych komórek.................................................................................. 120 4.6. Ramki wewnętrzne ............................................................................................... 121 4.7. Podsumowanie .................................................................................................... 124 Rozdział 5. Kaskadowe arkusze stylów .................................................................................................125 5.1. Definiowanie reguł stylu........................................................................................ 126 5.2. Zewnętrzne i lokalne arkusze stylów ...................................................................... 128 Zewnętrzne arkusze stylów ................................................................................... 128 Element STYLE i arkusze stylów JavaScript ............................................................ 130 Wewnętrzne definicje stylów ................................................................................. 130 5.2. Wskaźniki............................................................................................................ 131 Elementy HTML ................................................................................................... 132 Klasy definiowane przez użytkownika..................................................................... 133 Identyfikatory definiowane przez użytkownika ......................................................... 133 Pseudoklasy odsyłaczy......................................................................................... 134 5.4. Łączenie kaskadowe. Reguły pierwszeństwa w arkuszach stylów.............................. 135 5.5. Właściwości kroju pisma....................................................................................... 136 5.6. Właściwości pierwszego planu i tła ........................................................................ 141 5.7. Właściwości tekstu .............................................................................................. 143 5.8. Właściwości prostokąta ograniczającego................................................................ 147 Marginesy ........................................................................................................... 148 Obramowanie ...................................................................................................... 148 Dopełnienie......................................................................................................... 150 Tryby wyświetlania prostokąta ograniczającego....................................................... 150
  • 4. Spis treści 5 5.9. Obrazki i elementy pływające ................................................................................ 151 5.10. Właściwości list ................................................................................................. 153 5.11. Standardowe formaty zapisu wartości .................................................................. 153 Długości ............................................................................................................. 154 Kolory................................................................................................................. 154 5.12. Warstwy ............................................................................................................ 155 Definiowanie warstw przez elementy LAYER i ILAYER .............................................. 155 Definiowanie warstw przez arkusze stylów ............................................................. 159 5.13. Podsumowanie .................................................................................................. 162 Część II Programowanie w języku Java 163 Rozdział 6. Podstawowe informacje o Javie ..........................................................................................165 6.1. Cechy charakterystyczne Javy................................................................................ 166 Java jest językiem współpracującym z Internetem i aplikacjami sieciowymi ............... 167 Java jest językiem przeznaczonym dla różnych platform........................................... 169 Java jest językiem łatwym do nauczenia ................................................................ 172 Java jest językiem obiektowym.............................................................................. 173 Dzięki 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 językiem niezależnym od platformy .......................................................... 175 Java jest językiem łatwym do nauczenia ................................................................ 177 Java jest językiem obiektowym.............................................................................. 177 Java jest językiem, który można stosować w każdym projekcie informatycznym ......... 178 6.3. Wersje Javy ......................................................................................................... 178 Której wersji powinno się używać?......................................................................... 180 Bez względu na to, która wersja zostanie wybrana… .............................................. 180 6.4. Rozpoczęcie pracy................................................................................................ 181 Instalacja Javy..................................................................................................... 182 Instalacja przeglądarki obsługującej Javę............................................................... 183 Zapisanie odsyłacza lub instalowanie dokumentacji API Javy ................................... 183 Opcjonalne instalowanie zintegrowanego środowiska programistycznego.................. 184 Utworzenie i uruchomienie programu..................................................................... 185 6.5. Przykładowe programy Javy ................................................................................... 185 Aplikacja „Witaj świecie” ...................................................................................... 186 Argumenty linii poleceń ........................................................................................ 186 Aplet „Witaj świecie” ........................................................................................... 187 Parametry apletu ustalane przez użytkownika......................................................... 188 6.6. Podsumowanie .................................................................................................... 191 Rozdział 7. Programowanie obiektowe w języku Java.........................................................................193 7.1. Zmienne obiektowe .............................................................................................. 194 7.2. Metody ............................................................................................................... 196 7.3. Konstruktory i słowo kluczowe „this” ..................................................................... 197 Inicjacja statyczna ............................................................................................... 200 7.4. Destruktory ......................................................................................................... 200 7.5. Przeciążanie ........................................................................................................ 201 7.6. Udostępnianie klas w oddzielnych plikach .............................................................. 204
  • 5. 6 Spis treści 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, ścieżki dostępu do klas i archiwa JAR ..................................................... 226 Ścieżka do klas — CLASSPATH ............................................................................ 229 7.11. Modyfikatory deklaracji ....................................................................................... 232 Modyfikatory widoczności ..................................................................................... 232 Inne modyfikatory ................................................................................................ 233 7.12. Podsumowanie .................................................................................................. 235 Rozdział 8. Podstawowa składnia języka Java.....................................................................................237 8.1. Podstawowe informacje na temat składni .............................................................. 238 8.2. Podstawowe typy danych ...................................................................................... 239 Konwersja typów prostych .................................................................................... 242 8.3. Operatory, instrukcje warunkowe i pętle................................................................. 242 Operatory matematyczne...................................................................................... 243 Instrukcje warunkowe .......................................................................................... 244 Pętle .................................................................................................................. 249 8.4. Klasa Math ......................................................................................................... 252 Stałe .................................................................................................................. 252 Metody ogólnego przeznaczenia............................................................................ 252 Metody trygonometryczne ..................................................................................... 254 Klasy BigInteger i BigDecimal ............................................................................... 254 8.5. Wprowadzanie i wyświetlanie danych ..................................................................... 256 Wyprowadzanie danych na standardowe urządzenie wyjściowe ................................ 256 Wyprowadzanie danych na standardowe wyjście informacji o błędach....................... 258 Odczytywanie danych ze standardowego urządzenia wejściowego ............................ 258 8.6. Uruchamianie programów zewnętrznych ................................................................. 258 8.7. Referencje........................................................................................................... 264 Przekazywanie argumentów w Javie....................................................................... 266 Operator instanceof ............................................................................................. 266 8.8. Ciągi 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. Przykład — proste drzewo binarne....................................................................... 280 8.12. Wyjątki .............................................................................................................. 284 Podstawy obsługi wyjątków................................................................................... 285 Wielokrotne klauzule catch ................................................................................... 287 Klauzula Finally ................................................................................................... 288 Generowanie wyjątków ......................................................................................... 288 Niesprawdzane wyjątki ......................................................................................... 290 8.13. Podsumowanie .................................................................................................. 290
  • 6. Spis treści 7 Rozdział 9. Aplety i podstawy operacji graficznych..............................................................................291 9.1. Czym są aplety? .................................................................................................. 292 9.2. Budowanie apletu ................................................................................................ 293 Szablony apletów................................................................................................. 293 Szablony HTML.................................................................................................... 294 9.3. Przykładowy aplet................................................................................................. 295 Automatyczne odświeżanie wyglądu okna .............................................................. 296 Odświeżanie kodu apletu podczas prac projektowych.............................................. 296 9.4. Poszczególne etapy pracy apletu ........................................................................... 298 9.5. Inne metody apletów ............................................................................................ 299 9.6. Znacznik HTML APPLET ........................................................................................ 304 9.7. Odczyt parametrów apletu .................................................................................... 306 Przykład odczytu parametrów 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 kreślenia .................................................................................................... 318 Współrzędne i obszary obcinania .......................................................................... 319 9.12. Wyświetlanie plików graficznych .......................................................................... 319 Pobieranie rysunków określonych względnym adresem URL..................................... 320 Pobieranie rysunków określonych bezwzględnym adresem URL................................ 322 Pobieranie rysunków w aplikacjach Javy................................................................. 323 9.13. Buforowanie plików graficznych ........................................................................... 325 9.14. Nadzorowanie procesu pobierania rysunków......................................................... 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 Najczęściej wykorzystywane metody klasy Graphics2D............................................ 339 10.2. Style kreślenia................................................................................................... 342 Klasy kształtu...................................................................................................... 342 10.3. Style wypełnienia ............................................................................................... 346 Klasy wypełniania ................................................................................................ 346 Rysunki jako wzorce wypełnień ............................................................................. 349 10.4. Przezroczystość ................................................................................................. 353 10.5. Korzystanie z czcionek lokalnych ......................................................................... 355 10.6. Style kreślenia linii............................................................................................. 357 Atrybuty pióra ...................................................................................................... 357 10.7. Transformacje współrzędnych ............................................................................. 362 Pochylenie .......................................................................................................... 365 10.8. Pozostałe funkcje biblioteki Java 2D .................................................................... 366 10.9. Podsumowanie .................................................................................................. 367 Rozdział 11. Obsługa zdarzeń myszy i klawiatury.................................................................................369 11.1. Niezależne klasy nasłuchu zdarzeń ...................................................................... 370 Rysowanie kół ..................................................................................................... 372 11.2. Implementacja interfejsów nasłuchu.................................................................... 373
  • 7. 8 Spis treści 11.3. Obsługa zdarzeń w klasach wewnętrznych ............................................................ 374 11.4. Obsługa zdarzeń w anonimowych klasach wewnętrznych ....................................... 376 11.5. Standardowe interfejsy nasłuchu......................................................................... 377 11.6. Za kulisami — niskopoziomowe przetwarzanie zdarzeń ......................................... 382 11.7. Pole tekstowe poprawiające błędy ....................................................................... 385 11.8. Klasa deski kreślarskiej ..................................................................................... 387 Ulepszona deska kreślarska................................................................................. 389 11.9. Podsumowanie .................................................................................................. 390 Rozdział 12. Rozmieszczanie komponentów ...........................................................................................391 12.1. Menedżer rozmieszczenia FlowLayout .................................................................. 392 Konstruktory menedżera FlowLayout...................................................................... 393 Inne metody menedżera FlowLayout ...................................................................... 393 12.2. Menedżer rozmieszczenia BorderLayout ............................................................... 394 Konstruktory menedżera BorderLayout .................................................................. 396 Inne metody menedżera BorderLayout................................................................... 396 12.3. Menedżer rozmieszczenia GridLayout................................................................... 397 Konstruktory menedżera GridLayout ...................................................................... 397 Inne metody menedżera GridLayout....................................................................... 399 12.4. Menedżer rozmieszczenia CardLayout.................................................................. 399 Konstruktory menedżera CardLayout ..................................................................... 402 Inne metody menedżera CardLayout...................................................................... 403 12.5. Menedżer rozmieszczenia GridBagLayout ............................................................. 403 Obiekt GridBagConstraints ................................................................................... 404 Przykład .............................................................................................................. 406 Konstruktor menedżera GridBagLayout .................................................................. 409 Inne metody menedżera GridBagLayout ................................................................. 409 12.6. Menedżer rozmieszczenia BoxLayout ................................................................... 410 Konstruktor menedżera BoxLayout ........................................................................ 413 Inne metody menedżera BoxLayout ....................................................................... 413 12.7. Wyłączenie menedżera rozmieszczenia ................................................................ 414 12.8. Efektywne wykorzystanie menedżerów rozmieszczenia .......................................... 415 Wykorzystanie zagnieżdżanych kontenerów ............................................................ 416 Wyłączenie menedżera rozmieszczenia w pracy z niektórymi kontenerami................. 419 Operowanie wolną przestrzenią wokół komponentów .............................................. 420 12.9. Podsumowanie .................................................................................................. 423 Rozdział 13. Komponenty AWT.................................................................................................................425 13.1. Klasa Canvas .................................................................................................... 426 Powoływanie i korzystanie z obiektu Canvas........................................................... 427 Przykład — komponent Kolo ................................................................................. 428 13.2. Klasa Component .............................................................................................. 430 13.3. Lekkie komponenty języka Java 1.1..................................................................... 436 13.4. Klasa Panel....................................................................................................... 438 Domyślny menedżer rozmieszczenia — FlowLayout................................................. 438 Tworzenie i posługiwanie się obiektem Panel ......................................................... 439 Przykład — zastosowanie obiektu Panel do grupowania komponentów..................... 439 13.5. Klasa Container ................................................................................................. 441 13.6. Klasa Applet...................................................................................................... 443 13.7. Klasa ScrollPane ............................................................................................... 443 Tworzenie i posługiwanie się obiektem ScrollPane.................................................. 443 Przykład — obiekt ScrollPane zawierający panel o stu przyciskach........................... 443
  • 8. Spis treści 9 13.8. Klasa Frame ...................................................................................................... 444 Domyślny menedżer rozmieszczenia — BorderLayout ............................................. 445 Korzystanie z obiektu Frame ................................................................................. 445 Przykłady 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 Przykład — zapisywana ramka .............................................................................. 452 13.10. Klasa Dialog.................................................................................................... 455 Tworzenie i posługiwanie się obiektami Dialog ....................................................... 455 Przykład — potwierdzenie zamknięcia okna ........................................................... 455 13.11. Klasa FileDialog............................................................................................... 457 Przykład — wyświetlanie zawartości plików w polu tekstowym ................................. 457 13.12. Klasa Window.................................................................................................. 459 Domyślny menedżer rozmieszczenia — BorderLayout ............................................. 460 Tworzenie i posługiwanie się obiektem Window ...................................................... 460 13.13. Obsługa zdarzeń kontrolek GUI.......................................................................... 461 Rozproszone przetwarzanie zdarzeń ...................................................................... 462 Scentralizowane przetwarzanie zdarzeń ................................................................. 463 13.14. Klasa Button ................................................................................................... 465 Konstruktory ....................................................................................................... 465 Przykład — aplet z trzema przyciskami .................................................................. 465 Inne metody klasy Button ..................................................................................... 466 Obsługa zdarzeń przycisków ................................................................................. 467 13.15. Klasa Checkbox ............................................................................................... 469 Konstruktory ....................................................................................................... 470 Przykład — zaznaczone pola wyboru...................................................................... 470 Inne metody klasy Checkbox ................................................................................ 471 Obsługa zdarzeń obiektu Checkbox ....................................................................... 472 13.16. Grupy pól wyboru (przyciski opcji) ...................................................................... 472 Konstruktory ....................................................................................................... 473 Przykład — pola wyboru a przyciski opcji................................................................ 473 Inne metody klas CheckboxGroup i Checkbox ........................................................ 474 Obsługa zdarzeń obiektu CheckboxGroup .............................................................. 474 13.17 Klasa Choice .................................................................................................... 475 Konstruktor......................................................................................................... 475 Przykład zastosowania list rozwijanych .................................................................. 475 Inne metody klasy Choice..................................................................................... 476 Obsługa zdarzeń obiektu Choice ........................................................................... 477 13.18. Klasa List........................................................................................................ 478 Konstruktory ....................................................................................................... 479 Przykład — listy pojedynczego i wielokrotnego wyboru ............................................ 479 Inne metody klasy List ......................................................................................... 480 Obsługa zdarzeń obiektu List ................................................................................ 482 13.19. Klasa TextField ................................................................................................ 486 Konstruktory ....................................................................................................... 487 Przykład — tworzenie obiektów TextField ............................................................... 487 Inne metody klasy TextField.................................................................................. 488 Obsługa zdarzeń obiektu TextField ........................................................................ 490
  • 9. 10 Spis treści 13.20. Klasa TextArea ................................................................................................ 491 Konstruktory ....................................................................................................... 491 Przykład — puste i wypełnione obszary tekstowe ................................................... 492 Inne metody klasy TextArea .................................................................................. 492 Obsługa zdarzeń obiektu TextArea......................................................................... 493 13.21. Klasa Label ..................................................................................................... 493 Konstruktory ....................................................................................................... 494 Przykład — cztery różne etykiety ........................................................................... 494 Inne metody klasy Label....................................................................................... 495 Obsługa zdarzeń obiektu Label ............................................................................. 496 13.22. Paski przewijania i suwaki ................................................................................ 497 Konstruktory ....................................................................................................... 497 Przykład — różnorodne paski kontrolki suwaków .................................................... 498 Inne metody klasy Scrollbar.................................................................................. 499 Obsługa zdarzeń obiektu Scrollbar ........................................................................ 501 13.23. Menu kontekstowe........................................................................................... 503 Konstruktory ....................................................................................................... 503 Przykład — menu kontekstowe apletu ................................................................... 503 Inne metody klasy PopupMenu ............................................................................. 505 Obsługa zdarzeń obiektu PopupMenu .................................................................... 505 13.24. Podsumowanie ................................................................................................ 506 Rozdział 14. Podstawy Swing..................................................................................................................507 14.1. Podstawy Swing ................................................................................................. 508 Różnice pomiędzy technologiami Swing i AWT ........................................................ 508 14.2. Komponent JApplet ............................................................................................ 515 14.3. Komponent JFrame ............................................................................................ 517 14.4. Komponent JLabel ............................................................................................. 518 Nowe funkcje — wyświetlanie grafiki, obramowania i treści HTML ........................... 519 Konstruktory klasy JLabel..................................................................................... 520 Najczęściej 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 Najczęściej wykorzystywane metody klasy JButton (AbstractButton) ......................... 524 14.6. Komponent JPanel ............................................................................................. 526 Konstruktory klasy JPanel..................................................................................... 527 Nowe elementy — obramowania........................................................................... 527 Najczęściej wykorzystywane metody klasy BorderFactory ......................................... 528 14.7. Komponent JSlider............................................................................................. 530 Nowe elementy — znaczniki przesunięcia i opisy.................................................... 531 Konstruktory klasy JSlider .................................................................................... 531 Najczęściej wykorzystywane metody klasy JSlider ................................................... 532 14.8. Komponent JColorChooser.................................................................................. 534 Konstruktory klasy JColorChooser ......................................................................... 535 Najczęściej wykorzystywane metody klasy JColorChooser ........................................ 535 14.9. Komponent JInternalFrame ................................................................................. 537 Konstruktory klasy JInternalFrame......................................................................... 538 Najczęściej wykorzystywane metody klasy JInternalFrame........................................ 538 14.10. Komponent JOptionPane .................................................................................. 541 Najczęściej wykorzystywane metody klasy JOptionPane........................................... 541
  • 10. Spis treści 11 14.11. Komponent JToolBar ........................................................................................ 545 Konstruktory klasy JToolBar.................................................................................. 546 Najczęściej wykorzystywane metody klasy JToolBar ................................................ 546 14.12 Komponent JEditorPane .................................................................................... 550 Podążanie za odsyłaczami .................................................................................... 551 Konstruktory klasy JEditorPane ............................................................................. 552 Najczęściej wykorzystywane metody klasy JEditorPane............................................ 552 Implementacja prostej przeglądarki internetowej .................................................... 553 Obsługa 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 wyświetlaczy.............................. 564 15.2. JList ................................................................................................................. 565 Kontrolka JList ze stałym zestawem opcji .............................................................. 565 Kontrolka JList ze zmiennym zestawem opcji ......................................................... 570 Kontrolka JList z niestandardowym modelem danych .............................................. 572 Kontrolka JList z niestandardowym wyświetlaczem ................................................. 577 15.3. JTree ................................................................................................................ 581 Proste drzewo JTree............................................................................................. 581 Obsługa zdarzeń JTree ......................................................................................... 585 Niestandardowe modele danych i dynamiczne drzewa............................................. 587 Zastępowanie ikon dla wierzchołków drzewa .......................................................... 590 15.4. JTable ............................................................................................................... 592 Prosta tabela JTable ............................................................................................ 592 Modele danych tabeli........................................................................................... 596 Wyświetlacze komórek tabeli ................................................................................ 601 Obsługa zdarzeń tabeli......................................................................................... 603 15.5. Drukowanie komponentów Swing ........................................................................ 606 Podstawowe zasady drukowania ........................................................................... 607 Rola podwójnego buforowania .............................................................................. 609 Ogólna procedura drukowania komponentów ......................................................... 609 Drukowanie w JDK 1.3 ......................................................................................... 614 15.6. Wielowątkowość w Swing.................................................................................... 615 Metody klasy SwingUtilities .................................................................................. 618 15.7. Podsumowanie .................................................................................................. 620 Rozdział 16. Programowanie równoległe z wykorzystaniem wielowątkowości................................621 16.1. Uruchamianie wątków ........................................................................................ 622 Metoda 1 — umieszczenie kodu w odrębnym obiekcie wątku .................................. 623 Metoda 2 — umieszczenie kodu w klasie sterującej, implementującej interfejs Runnable ................................................................. 625 16.2. Sytuacje wyścigu................................................................................................ 627 16.3. Synchronizacja................................................................................................... 630 Synchronizacja sekcji kodu ................................................................................... 630 Synchronizacja całej metody ................................................................................. 631 Powszechny błąd przy synchronizacji ..................................................................... 631
  • 11. 12 Spis treści 16.4. Tworzenie metod wielowątkowych........................................................................ 633 16.5. Metody klasy Thread .......................................................................................... 638 Konstruktory ....................................................................................................... 638 Stałe .................................................................................................................. 639 Metody ............................................................................................................... 640 Zatrzymywanie wątku ........................................................................................... 644 16.6. Grupy wątków .................................................................................................... 646 Konstruktory ....................................................................................................... 646 Metody ............................................................................................................... 647 16.7. Wielowątkowa grafika i podwójne buforowanie...................................................... 648 Odrysowywanie wszystkiego w metodzie paint........................................................ 649 Zaimplementowanie elementów dynamicznych jako odrębnego komponentu............. 652 Stworzenie odrębnych procedur bezpośrednio zajmujących się rysowaniem .............. 653 Nadpisanie metody update i spowodowanie, aby paint wykonywało przyrostowe uaktualnianie............................................... 655 Wykorzystanie podwójnego buforowania ................................................................ 659 16.8. Animowanie obrazków ........................................................................................ 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 Przykład — ogólny klient sieciowy ......................................................................... 679 Rezultat — połączenie z serwerem FTP ................................................................. 681 17.2. Analiza składniowa łańcuchów za pomocą klasy StringTokenizer ............................ 682 Klasa StringTokenizer .......................................................................................... 682 Konstruktory ....................................................................................................... 682 Metody ............................................................................................................... 683 Przykład — interaktywny analizator składniowy....................................................... 683 17.3. Przykład — klient sprawdzający poprawność adresów poczty elektronicznej ............ 684 17.4. Przykład — klient sieciowy pobierający dokumenty WWW ...................................... 687 Klasa pobierająca dokument wskazany przez adres URI na podanym serwerze ......... 688 Klasa pobierająca dokument wskazany przez adres URL ......................................... 689 Rezultat wykonania programu CzytnikUrl ................................................................ 690 17.5. Klasa URL ......................................................................................................... 691 Pobieranie dokumentów 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 Przykład — ogólny serwer sieciowy........................................................................ 703 Rezultat — obsługa połączenia z przeglądarki internetowej ..................................... 706 Połączenie pomiędzy programami KlientSieciowy i SerwerSieciowy .......................... 706 17.8. Przykład — prosty serwer HTTP ........................................................................... 707 Program WielowatkowySerwerEcho........................................................................ 710 17.9. RMI — zdalne wywoływanie metod ...................................................................... 712 Etapy tworzenia aplikacji RMI................................................................................ 713 Prosty przykład .................................................................................................... 714 Praktyczny przykład — serwer wykonujący całkowanie numeryczne .......................... 718 Praktyczny przykład czterech wymaganych klas....................................................... 720
  • 12. Spis treści 13 Kompilacja i uruchomienie przykładu ..................................................................... 724 Konfiguracja RMI w dużych sieciach ...................................................................... 725 Kompilacja i uruchomienie przykładu ..................................................................... 728 Przykład apletu RMI ............................................................................................. 730 17.10. Podsumowanie ................................................................................................ 732 Cześć III Programowanie aplikacji działających po stronie serwera 735 Rozdział 18. Formularze w języku HTML................................................................................................737 18.1. Sposób przesyłania danych w języku 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 przełączniki .............................................................................. 755 Pola wyboru ........................................................................................................ 755 Przełączniki ......................................................................................................... 756 18.6 Listy rozwijane oraz zwykłe................................................................................... 757 18.7. Wysyłanie plików 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 grupujące.......................................................................................... 766 18.11. Kolejność tabulacji........................................................................................... 768 18.12. Podsumowanie ................................................................................................ 769 Rozdział 19. Programy w języku Java po stronie serwera — serwlety............................................771 19.1. Przewaga serwerów nad tradycyjnymi programami CGI .......................................... 773 Wydajność .......................................................................................................... 773 Wygoda............................................................................................................... 773 Duże możliwości .................................................................................................. 773 Przenośność ....................................................................................................... 774 Bezpieczeństwo................................................................................................... 774 Niski koszt .......................................................................................................... 774 19.2. Instalacja oraz konfiguracja serwera .................................................................... 775 Pobieranie oprogramowania obsługującego serwlety oraz JSP.................................. 775 Dokumentacja API serwletów oraz stron JSP .......................................................... 776 Określanie klas wykorzystywanych przez kompilator Javy......................................... 777 Umieszczanie klas w pakietach............................................................................. 777 Konfiguracja serwera ........................................................................................... 777 Kompilacja oraz instalacja serwletów .................................................................... 778 Wywoływanie serwletów........................................................................................ 779 19.3. Podstawowa struktura serwletu........................................................................... 779 Serwlet tworzący prosty tekst ............................................................................... 780 Serwlet tworzący kod HTML .................................................................................. 781 Proste narzędzia do tworzenia dokumentów HTML.................................................. 783
  • 13. 14 Spis treści 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. Przykład wykorzystania parametrów inicjujących.................................................... 788 19.6. Żądanie klienta — dostęp do danych formularza .................................................. 791 Odczytywanie danych formularza w programach CGI................................................ 791 Odczytywanie danych formularza w serwletach ....................................................... 791 Przykład — odczytywanie wartości trzech parametrów............................................. 792 Filtrowanie danych zapytania ................................................................................ 794 19.7. Żądanie klienta — nagłówki żądania HTTP ........................................................... 796 Odczytywanie nagłówków żądania w serwletach...................................................... 796 Przykład — tworzenie tabeli zawierającej wszystkie nagłówki żądania....................... 798 Nagłówki żądania protokołu HTTP 1.1.................................................................... 800 Wysyłanie skompresowanych stron WWW .............................................................. 803 19.8. Odpowiedniki standardowych zmiennych CGI w przypadku serwletów...................... 805 19.9. Odpowiedź serwera — kody stanu HTTP .............................................................. 808 Określanie kodów stanu....................................................................................... 808 Kody stanu protokołu HTTP 1.1. ........................................................................... 810 Interfejs użytkownika dla różnych wyszukiwarek internetowych................................. 815 19.10. Odpowiedź serwera — nagłówki odpowiedzi HTTP............................................... 819 Ustawianie nagłówków odpowiedzi w serwletach .................................................... 819 Nagłówki odpowiedzi protokołu HTTP 1.1............................................................... 820 Trwały stan serwletu oraz automatyczne odświeżanie stron..................................... 826 19.11. Cookies .......................................................................................................... 834 Korzyści wynikające ze stosowania cookies ........................................................... 835 Niektóre problemy z plikami cookies ..................................................................... 836 Interfejs programistyczny API obsługi plików Cookie w serwletach ............................ 837 Przykład ustawiania oraz odczytywania cookies ...................................................... 840 Proste narzędzia do obsługi cookies...................................................................... 844 Odszukiwanie cookies o określonych nazwach ....................................................... 844 Tworzenie długotrwałych cookies........................................................................... 845 19.12. Śledzenie sesji ................................................................................................ 846 Konieczność śledzenia sesji ................................................................................. 846 Interfejs API służący do śledzenia sesji.................................................................. 848 Kończenie sesji ................................................................................................... 851 Serwlet ukazujący licznik odwiedzin ....................................................................... 852 19.13. Podsumowanie ................................................................................................ 854 Rozdział 20. Technologia JavaServer Pages ........................................................................................855 20.1. Podstawy technologii JSP ................................................................................... 855 20.2. Korzyści wynikające ze stosowania technologii JSP ............................................... 857 Porównanie z technologią Active Server Pages (ASP) oraz ColdFusion ...................... 857 Porównanie z technologią PHP .............................................................................. 857 Porównanie z serwletami...................................................................................... 858 Porównanie z technologią Server-Side Includes (SSI) .............................................. 858 Porównanie z językiem JavaScript ......................................................................... 858 20.3. Elementy skryptowe JSP ..................................................................................... 859 Wyrażenia ........................................................................................................... 859 Skryptlety............................................................................................................ 863
  • 14. Spis treści 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 Składnia dyrektyw w postaci zgodnej z XML ........................................................... 875 20.5. Dołączanie apletów oraz plików w dokumentach JSP............................................. 876 Dyrektywa include — dołączanie plików w czasie przekształcania strony do postaci serwletu ........................................................................................ 876 Dołączanie plików w trakcie obsługi żądania .......................................................... 879 Dołączanie apletów.............................................................................................. 880 Znacznik jsp:fallback............................................................................................ 884 20.6. Wykorzystywanie w stronach JSP komponentów JavaBeans ................................... 888 Prosty przykład wykorzystania klasy ziarna ............................................................. 889 Prosty przykład ustawiania właściwości ziarna........................................................ 891 Modyfikacja właściwości ziarna ............................................................................. 893 Współdzielenie ziaren .......................................................................................... 899 20.7. Definiowanie własnych znaczników JSP................................................................ 902 Komponenty tworzące bibliotekę znaczników.......................................................... 903 Definiowanie prostego znacznika .......................................................................... 906 Przyporządkowanie znacznikom atrybutów.............................................................. 910 Atrybuty znaczników — plik deskryptora biblioteki znaczników ................................. 911 Dołączanie zawartości znacznika........................................................................... 913 Opcjonalne dołączanie zawartości znacznika .......................................................... 917 Modyfikacja zawartości znacznika ......................................................................... 920 Znaczniki zagnieżdżone ........................................................................................ 926 20.8. Integrowanie serwletów ze stronami JSP .............................................................. 932 Przekazywanie żądań ........................................................................................... 934 Przykład — internetowe biuro podróży ................................................................... 937 Przekazywanie żądań ze stron JSP ........................................................................ 943 20.9. Podsumowanie .................................................................................................. 944 Rozdział 21. Wykorzystywanie apletów w charakterze interfejsu programów działających po stronie serwera...........................................................................................................945 21.1. Wysyłanie danych przy użyciu metody GET i wyświetlanie wynikowej strony.............. 946 21.2. Interfejs użytkownika programu wyszukującego informacje w wielu różnych wyszukiwarkach internetowych................................................. 947 21.3. Wykorzystywanie metody GET oraz przetwarzanie wyników w sposób bezpośredni (tunelowanie HTTP)....................................................... 951 Odczytywanie danych binarnych oraz danych tekstowych ......................................... 952 Odczytywanie struktur danych zachowanych przy użyciu serializacji .......................... 953 21.4. Przeglądarka żądań wysyłanych do serwera, używająca serializacji obiektów oraz tunelowania HTTP ................................................................................... 955
  • 15. 16 Spis treści 21.5. Wysyłanie danych przy użyciu metody POST i przetwarzanie wyników wewnątrz apletu (tunelowanie HTTP) ............................ 962 21.6. Aplet wysyłający dane przy użyciu 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 czynności konieczne do wykonania w celu zastosowania JDBC ........... 972 Załadowanie sterownika JDBC .............................................................................. 972 Określanie adresu URL służącego do nawiązania połączenia ................................... 973 Ustanawianie połączenia z bazą danych ................................................................ 974 Tworzenie instrukcji SQL ...................................................................................... 974 Wykonywanie zapytania ........................................................................................ 975 Przetwarzanie wyników zapytania .......................................................................... 975 Zamykanie połączenia.......................................................................................... 976 22.2. Prosty przykład wykorzystujący JDBC.................................................................... 976 22.3. Kilka narzędzi JDBC ........................................................................................... 981 22.4. Stosowanie utworzonych narzędzi JDBC ............................................................... 989 22.5. Interaktywna przeglądarka zapytań ...................................................................... 993 Kod przeglądarki zapytań...................................................................................... 995 22.6. Zapytania prekompilowane ................................................................................. 999 22.7. Podsumowanie ................................................................................................ 1003 Rozdział 23. Przetwarzanie dokumentów XML w języku Java......................................................... 1005 23.1. Analiza dokumentów XML przy użyciu modelu DOM (poziom 2)............................. 1006 Instalacja oraz konfiguracja ................................................................................ 1007 Analiza dokumentu ............................................................................................ 1008 23.2. Przykład wykorzystania modelu DOM — wyświetlenie dokumentu XML w postaci obiektu JTree................................................................................ 1009 23.3. Przetwarzanie dokumentów XML za pomocą interfejsu SAX 2.0............................ 1020 Instalacja oraz konfiguracja ................................................................................ 1020 Analiza dokumentu ............................................................................................ 1021 23.4. Pierwszy przykład użycia interfejsu SAX — wyświetlanie struktury dokumentu XML .... 1023 23.5. Drugi przykład użycia interfejsu SAX — zliczanie zamówień książek ...................... 1029 23.6. Przekształcanie dokumentu XML za pomocą transformacji XSLT .......................... 1033 Instalacja oraz konfiguracja ................................................................................ 1034 Transformacja ................................................................................................... 1035 23.7. Pierwszy przykład XSLT — edytor dokumentów XSLT ........................................... 1039 23.8. Drugi przykład XSLT — własny 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 zgodności z wieloma przeglądarkami ................................................. 1062 24.2. Monitorowanie zdarzeń użytkownika .................................................................. 1064 24.3. Poznawanie składni JavaScript.......................................................................... 1065 Dynamiczne określanie typu ............................................................................... 1065 Deklarowanie funkcji.......................................................................................... 1066 Klasy i obiekty................................................................................................... 1067 Tablice ............................................................................................................. 1071
  • 16. Spis treści 17 24.4. Wykorzystanie JavaScript do przekształcania stron WWW .................................... 1072 Dostosowanie do rozmiaru okna przeglądarki....................................................... 1073 Sprawdzanie, jakie moduły rozszerzające są dostępne.......................................... 1075 24.5. Wykorzystanie JavaScript do umieszczenia na stronie elementów dynamicznych ... 1077 Dynamiczna zmiana obrazków............................................................................. 1077 Przemieszczanie warstw ..................................................................................... 1084 24.6. Wykorzystanie JavaScript do sprawdzania poprawności formularzy ....................... 1087 Sprawdzanie pojedynczych wartości .................................................................... 1088 Sprawdzanie wartości przed odesłaniem formularza ............................................. 1090 24.7. Wykorzystanie JavaScript do zapisywania i sprawdzania znaczników kontekstu klienta........................................................................ 1094 24.8. Wykorzystanie JavaScript do współdziałania z ramkami ....................................... 1098 Pokierowanie ramką, aby wyświetliła podany URL................................................. 1099 Sprawianie aby ramka była aktywna .................................................................... 1102 24.9. Wywoływanie Javy z poziomu JavaScript ............................................................. 1102 Bezpośrednie wywoływanie metod Javy................................................................ 1103 Wykorzystanie apletów do wykonywania operacji dla JavaScript ............................. 1104 Sterowanie apletami przy użyciu JavaScript.......................................................... 1107 24.10. Dostęp do obiektów JavaScript z poziomu Javy................................................. 1110 Przykład — dopasowanie koloru tła apletu do koloru strony .................................. 1112 Przykład — aplet sterujący wartościami formularza HTML ..................................... 1113 Metody klasy JSObject ....................................................................................... 1122 24.11. Podsumowanie .............................................................................................. 1123 Rozdział 25. Krótki podręcznik JavaScript ......................................................................................... 1125 25.1. Obiekt Array..................................................................................................... 1125 Konstruktory ..................................................................................................... 1126 Właściwości ...................................................................................................... 1126 Metody ............................................................................................................. 1126 Zdarzenia.......................................................................................................... 1129 25.2. Obiekt Button .................................................................................................. 1129 Właściwości ...................................................................................................... 1129 Metody ............................................................................................................. 1129 Zdarzenia.......................................................................................................... 1130 25.3. Obiekt Checkbox.............................................................................................. 1130 Właściwości ...................................................................................................... 1131 Metody ............................................................................................................. 1131 Zdarzenia.......................................................................................................... 1131 25.4. Obiekt Date ..................................................................................................... 1132 Konstruktory ..................................................................................................... 1132 Właściwości ...................................................................................................... 1132 Metody ............................................................................................................. 1133 Zdarzenia.......................................................................................................... 1135 25.5. Obiekt Document ............................................................................................. 1135 Właściwości ...................................................................................................... 1135 Metody ............................................................................................................. 1137 Zdarzenia.......................................................................................................... 1138 25.6. Obiekt Element ................................................................................................ 1138 Właściwości ...................................................................................................... 1138 Metody ............................................................................................................. 1139 Zdarzenia.......................................................................................................... 1140
  • 17. 18 Spis treści 25.7. Obiekt FileUpload............................................................................................. 1140 Właściwości ...................................................................................................... 1140 Metody ............................................................................................................. 1141 Zdarzenia.......................................................................................................... 1141 25.8. Obiekt Form..................................................................................................... 1141 Właściwości ...................................................................................................... 1141 Metody ............................................................................................................. 1142 Zdarzenia.......................................................................................................... 1142 25.9. Obiekt Function ............................................................................................... 1143 Konstruktor....................................................................................................... 1143 Właściwości ...................................................................................................... 1143 Metody ............................................................................................................. 1144 Zdarzenia.......................................................................................................... 1144 25.10. Obiekt Hidden................................................................................................ 1144 Właściwości ...................................................................................................... 1144 Metody ............................................................................................................. 1144 Zdarzenia.......................................................................................................... 1145 25.11. Obiekt History................................................................................................ 1145 Właściwości ...................................................................................................... 1145 Metody ............................................................................................................. 1145 Zdarzenia.......................................................................................................... 1146 25.12. Obiekt Image ................................................................................................. 1146 Konstruktor....................................................................................................... 1146 Właściwości ...................................................................................................... 1146 Metody ............................................................................................................. 1147 Zdarzenia.......................................................................................................... 1147 25.13. Obiekt JavaObject .......................................................................................... 1148 25.14. Obiekt JavaPackage ....................................................................................... 1148 25.15. Obiekt Layer .................................................................................................. 1148 Konstruktory ..................................................................................................... 1149 Właściwości ...................................................................................................... 1149 Metody ............................................................................................................. 1150 Zdarzenia.......................................................................................................... 1151 25.16. Obiekt Link.................................................................................................... 1152 Właściwości ...................................................................................................... 1152 Metody ............................................................................................................. 1153 Zdarzenia.......................................................................................................... 1153 25.17. Obiekt Location ............................................................................................. 1154 Właściwości ...................................................................................................... 1154 Metody ............................................................................................................. 1155 Zdarzenia.......................................................................................................... 1155 25.18. Obiekt Math .................................................................................................. 1155 Właściwości ...................................................................................................... 1155 Metody ............................................................................................................. 1156 Zdarzenia.......................................................................................................... 1157 25.19. Obiekt MimeType ........................................................................................... 1158 Właściwości ...................................................................................................... 1158 Metody ............................................................................................................. 1158 Zdarzenia.......................................................................................................... 1158
  • 18. Spis treści 19 25.20. Obiekt Navigator ............................................................................................ 1159 Właściwości ...................................................................................................... 1159 Metody ............................................................................................................. 1161 Zdarzenia.......................................................................................................... 1161 25.21. Obiekt Number .............................................................................................. 1161 Konstruktor....................................................................................................... 1162 Właściwości ...................................................................................................... 1162 Metody ............................................................................................................. 1162 Zdarzenia.......................................................................................................... 1164 25.22. Obiekt Object................................................................................................. 1164 Konstruktory ..................................................................................................... 1164 Właściwości ...................................................................................................... 1164 Metody ............................................................................................................. 1165 Zdarzenia.......................................................................................................... 1165 25.23. Obiekt Option ................................................................................................ 1165 Konstruktory ..................................................................................................... 1165 Właściwości ...................................................................................................... 1166 Metody ............................................................................................................. 1166 Zdarzenia.......................................................................................................... 1166 25.24. Obiekt Password............................................................................................ 1166 Właściwości ...................................................................................................... 1167 Metody ............................................................................................................. 1167 Zdarzenia.......................................................................................................... 1167 25.25. Obiekt Plugin ................................................................................................. 1168 Właściwości ...................................................................................................... 1168 Metody ............................................................................................................. 1169 Zdarzenia.......................................................................................................... 1169 25.26. Obiekt Radio ................................................................................................. 1169 Właściwości ...................................................................................................... 1169 Metody ............................................................................................................. 1170 Zdarzenia.......................................................................................................... 1170 25.27. Obiekt RegExp ............................................................................................... 1170 Konstruktory ..................................................................................................... 1170 Właściwości ...................................................................................................... 1172 Metody ............................................................................................................. 1173 Zdarzenia.......................................................................................................... 1174 Wzorce specjalne w wyrażeniach regularnych ....................................................... 1174 25.28. Obiekt Reset ................................................................................................. 1174 Właściwości ...................................................................................................... 1174 Metody ............................................................................................................. 1174 Zdarzenia.......................................................................................................... 1176 25.29. Obiekt Screen................................................................................................ 1176 Właściwości ...................................................................................................... 1177 Metody ............................................................................................................. 1177 Zdarzenia.......................................................................................................... 1177 25.30. Obiekt Select................................................................................................. 1177 Właściwości ...................................................................................................... 1178 Metody ............................................................................................................. 1179 Zdarzenia.......................................................................................................... 1179
  • 19. 20 Spis treści 25.31. Obiekt String ................................................................................................. 1179 Konstruktor....................................................................................................... 1180 Właściwości ...................................................................................................... 1180 Metody ............................................................................................................. 1180 Zdarzenia.......................................................................................................... 1184 25.32. Obiekt Submit ............................................................................................... 1184 Właściwości ...................................................................................................... 1184 Metody ............................................................................................................. 1185 Zdarzenia.......................................................................................................... 1185 25.33. Obiekt Text.................................................................................................... 1186 Właściwości ...................................................................................................... 1186 Metody ............................................................................................................. 1186 Zdarzenia.......................................................................................................... 1187 25.34. Obiekt Textarea ............................................................................................. 1187 Właściwości ...................................................................................................... 1187 Metody ............................................................................................................. 1188 Zdarzenia.......................................................................................................... 1188 25.35. Obiekt Window............................................................................................... 1189 Właściwości ...................................................................................................... 1189 Metody ............................................................................................................. 1192 Zdarzenia.......................................................................................................... 1196 Przykład użycia metody open .............................................................................. 1198 25.36. Podsumowanie .............................................................................................. 1200 Dodatki 1201 Skorowidz .............................................................................................................................................. 1203
  • 20. Wykorzystywanie apletów w charakterze interfejsu programów działających po stronie serwera W tym rozdziale: n Wysyłanie danych przy u yciu metody GET i wyświetlanie wyników w przeglądarce n Wysyłanie danych przy u yciu metody GET i przetwarzanie wyników wewnątrz apletu (tunelowanie HTTP) n Wykorzystanie serializacji obiektów do wymiany struktur danych wysokiego poziomu pomiędzy apletami a serwletami n Wysyłanie danych przy u yciu metody POST i przetwarzanie wyników wewnątrz apletu (tunelowanie HTTP) n Pomijanie serwera HTTP podczas komunikacji z programem po stronie serwera Omówione w rozdziale 18. formularze HTTP stanowią prosty, lecz ograniczony sposób pobierania danych wejściowych od u ytkownika i przekazywania ich do serwletów lub programów CGI. Niekiedy jednak wymagane jest zastosowanie bardziej skomplikowanego interfejsu u ytkownika. Aplety umo liwiają większą kontrolę na rozmiarem, kolorem oraz czcionką elementów graficznego interfejsu u ytkownika, jak równie udostępniają więcej mo liwości obsługiwanych przez dostarczone obiekty (paski postępu, przewijania, rysowa- nie linii, okna modalne itp.), pozwalają śledzić zdarzenia myszy oraz klawiatury, obsługi- wać definiowane własne formularze (przeciągane ikony, klawiatury do wybierania nume- rów itp.), a tak e pozwalają wysłać ądanie pochodzące od jednego u ytkownika do wielu programów działających po stronie serwera. Te dodatkowe mo liwości mają jednak swoją
  • 21. 946 Część III n Programowanie aplikacji działających po stronie serwera cenę, poniewa stworzenie interfejsu u ytkownika w języku Java pociąga za sobą więcej wysiłku, ni ma to miejsce w przypadku formularzy HTML, szczególnie wtedy, gdy inter- fejs zawiera tekst formatowany. Dlatego te wybór pomiędzy formularzami HTML a aple- tami zale y od rodzaju tworzonej aplikacji. W formularzach HTML ądania typu )'6 oraz 2156 obsługiwane są w prawie ten sam sposób. Wszystkie elementy interfejsu u ytkownika słu ące do wprowadzania danych są identyczne. Zmieniana jest jedynie wartość atrybutu /'6*1& znacznika (14/. Natomiast w przypadku apletów istnieją trzy ró ne podejścia do problemu. Pierwsze z nich, opisane w podrozdziale 21.1, polega na naśladowaniu przez aplety formularzy HTML u ywających metody )'6, co powoduje wysłanie danych do serwera właśnie przy u yciu tej metody i wyświetlenie wyni- ków w przeglądarce. W podrozdziale 21.2, „Interfejs u ytkownika programu wyszukującego informacje w wielu ró nych wyszukiwarkach internetowych”, przedstawiony zostanie przy- kład tego rodzaju podejścia. Druga metoda zostanie opisana w podrozdziale 21.3. i polega na wykorzystaniu apletu wysyłającego dane do serwletu, a następnie samodzielnie przetwa- rzającego uzyskane wyniki. Przykład prezentujący zastosowanie tej metody przedstawiony będzie w podrozdziale 21.4, „Przeglądarka ądań wysyłanych do serwera u ywająca seria- lizacji obiektów oraz tunelowania HTTP”. Trzecie podejście, opisane w podrozdziale 21.5, polega na wykorzystaniu apletu wysyłającego dane do serwletu przy u yciu metody POST, a następnie samodzielnie przetwarzającego uzyskane wyniki. Przykład tej metody zamiesz- czony jest w podrozdziale 21.6, „Aplet wysyłający dane przy u yciu metody POST”. W pod- rozdziale 21.7. przedstawiony zostanie sposób całkowitego pominięcia przez aplet serwera HTTP i bezpośredniej komunikacji z programem działającym na tym samym komputerze, z którego pobrany został aplet. W rozdziale tym zało ono, e Czytelnik w stopniu podstawowym zna sposoby tworzenia podstawowych apletów (rozdział 9.) i dlatego skoncentrowano się jedynie na technikach umo liwiających komunikację apletów z programami działającymi po stronie serwera. 21.1. Wysyłanie danych przy u yciu metody GET i wyświetlanie wynikowej strony Metoda UJQY&QEWOGPV nakazuje przeglądarce wyświetlenie dokumentu umieszczonego pod określonym adresem URL. Dzięki dołączeniu do adresu URL programu danych, umiesz- czonych po znaku zapytania (?), mo liwe jest przesłanie ich przy u yciu metody )'6 do serwletu lub innego programu CGI. Dzięki temu w celu wysłania danych z apletu konieczne jest jedynie dołączenie ich do łańcucha znakowego, słu ącego do tworzenia adresu URL, a następnie w normalny sposób utworzenie obiektu URL i wywołanie metody UJQY&QEW OGPV. Poni ej przedstawiony został prosty szablon, pozwalający na zastosowanie tej metody w apletach. Zakłada on, e DCQY[#FTGU74. zawiera łańcuch znakowy, reprezentujący adres URL programu po stronie serwera, zaś zmienna RGYPGCPG zawiera informacje, które mają zostać wysłane wraz z ądaniem. VT[ ] 74. CFTGU2TQITCOW PGY 74. DCQY[#FTGU74. ! RGYPGCPG IGV#RRNGV%QPVGZV UJQYQEWOGPV CFTGU2TQITCOW _ ECVEJ /CNHQTOGF74.'ZEGRVKQP OWG ] _
  • 22. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 947 Kiedy dane przesyłane są przez przeglądarkę, zostaną zakodowane przy u yciu metody URL encode, co oznacza, e spacje konwertowane są na znaki plusa ( ), zaś wszystkie nie alfanumeryczne znaki zmieniane są na znak procenta ( ), po którym występują dwie cyfry szesnastkowe, określające kod znaku w u ywanym zestawie. Zostało to dokładnie opisane w podrozdziale 18.2, „Znacznik FORM”. W poprzednim przykładzie zało ono, e łańcuch znakowy RGYPGCPG jest ju zakodowany poprawnie. W przeciwnym wypadku wystąpiłby błąd działania programu. W JDK 1.1 oraz w wersjach późniejszych występuje specjalna klasa o nazwie 74.'PEQFGT, posiadająca zdefiniowaną statyczną metodę o nazwie GPEQFG, której wywołanie powoduje wykonanie omówionego kodowania. Jeśli więc aplet komuni- kuje się z programem po stronie serwera, który normalnie otrzymywałby dane )'6 z for- mularzy HTML, aplet musi zakodować ka dą przesyłaną wartość, lecz musi równie u yć znaku równości () pomiędzy ka dą nazwą zmiennej a stowarzyszoną z nią wartością, jak równie znaku ( ) w celu oddzielenia od siebie ka dej takiej pary. Dlatego te nie mo na wykorzystać wspomnianej metody 74.'PEQFGTGPEQFG RGYPGCPG dla całego łańcucha znakowego zawierającego dane (wówczas zostałyby zakodowane równie te znaki specjal- ne — przyp. tłum.), lecz w zamian selektywnie zakodować ka dą część pary. Czynność ta mo e zostać wykonana na przykład w poni szy sposób: 5VTKPI RGYPGCPG PCYC 74.'PEQFGTGPEQFG YCTVQUE PCYC 74.'PEQFGTGPEQFG YCTVQUE PCYC0 74.'PEQFGTGPEQFG YCTVQUE0 VT[ ] 74. CFTGU2TQITCOW PGY 74. DCQY[#FTGU74. ! RGYPGCPG IGV#RRNGV%QPVGZV UJQYQEWOGPV CFTGU2TQITCOW _ ECVEJ /CNHQTOGF74.'ZEGRVKQP OWG ] _ Cały przykład zostanie przedstawiony w kolejnym podrozdziale. 21.2. Interfejs u ytkownika programu wyszukującego informacje w wielu ró nych wyszukiwarkach internetowych Na listingu 21.1 przedstawiony został aplet tworzący pole tekstowe, słu ące do pobierania danych wejściowych od u ytkownika. Po zatwierdzeniu danych, aplet koduje je u ywając metody URL-encode i tworzy trzy ró ne adresy URL, z dołączanymi do nich danymi prze- syłanymi za pomocą metody )'6. Ka dy z nich przeznaczony jest dla innej wyszukiwarki internetowej: Google, Infoseek oraz Lycos. Następnie, w celu nakazania przeglądarce wy- świetlenia rezultatów wyszukiwania w trzech ró nych obszarach ramki, aplet u ywa meto- dy UJQYQEWOGPV. Formularze HTML nie mogą zostać wykorzystane do wykonania tego ro- dzaju zadania, poniewa mogą one przesyłać dane jedynie do pojedynczego adresu URL. Na listingu 21.2 przedstawiona została klasa o nazwie 2CTCOGVT[9[UWMKYCPKC, wykorzy- stywana przez aplet do tworzenia określonych adresów URL, niezbędnych do przekierowa- nia ądań do ró nych wyszukiwarek internetowych. Jak wspomniano w rozdziale 19., klasa 2CTCOGVT[9[UWMKYCPKC mo e być równie wykorzystywana przez serwlety. Wyniki dzia- łania apletu przedstawiają rysunki 21.2 – 21.2.
  • 23. 948 Część III n Programowanie aplikacji działających po stronie serwera Na listingu 21.3 zaprezentowany został główny dokument HTML, zaś na listingu 21.4 do- kument HTML wykorzystywany do osadzenia apletu. Zainteresowanych dokładną budową tych trzech niewielkich plików HTML, słu ących do utworzenia początkowej zawartości trzech komórek ramki, ukazanych na rysunku 21.1, odsyłamy do kodu źródłowego umiesz- czonego w archiwum znajdującym się po adresem: ftp://ftp.helion.pl/przyklady/serinp.zip. Listing 21.1. ApletWyszukiwania.java KORQTV LCXCCRRNGV#RRNGV KORQTV LCXCCYV
  • 24. KORQTV LCXCCYVGXGPV
  • 25. KORQTV LCXCPGV
  • 27. #RNGV QFE[VWLæE[ YCTVQ è WOKGUEQPæ Y RQNW GF[E[LP[O
  • 28. C PCUVúRPKG VYQTæE[ RT[ LGL W [EKW VT[ TÎ PG CFTGU[ 74.
  • 29. CYKGTCLæEG QUCFQPG FCPG )'6 RQ LGFP[O FNC Y[UWMKYCTGM )QQING +PHQUGGM QTC .[EQU
  • 30. 0CUVúRPKG CFTGU[ VG RTGMC[YCPG Uæ FQ RTGINæFCTMK
  • 31. Y[ YKGVNCLæEGL Y[PKMK Y[UWMKYCPKC Y VTGEJ QFFKGNP[EJ TCOMCEJ
  • 32. YTÎè WYCIú G Y[M G HQTOWNCTG *6/. PKG Uæ Y UVCPKG Y URQUÎD CWVQOCV[EP[
  • 33. Y[U[ Cè YKGNW LGFPQEGUP[EJ CR[VC
  • 34. 2
  • 35. -QF[ CEGTRPKúVG RQNUMKGL GF[ELK
  • 36. MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
  • 39. /CTV[ *CNN CPF .CTT[ $TQYP
  • 40. RWDNKE ENCUU #RNGV9[UWMKYCPKC GZVGPFU #RRNGV KORNGOGPVU #EVKQP.KUVGPGT ] RTKXCVG 6GZV(KGNF RQNGCR[VCPKC RTKXCVG $WVVQP RT[EKUMCVYKGTFCLCE[ RWDNKE XQKF KPKV ] UGV$CEMITQWPF %QNQTYJKVG UGV(QPV PGY (QPV 5GTKH (QPV$1. CFF PGY .CDGN 2QUWMKYCP[ EKæI RQNGCR[VCPKC PGY 6GZV(KGNF RQNGCR[VCPKCCFF#EVKQP.KUVGPGT VJKU CFF RQNGCR[VCPKC RT[EKUMCVYKGTFCLCE[ PGY $WVVQP 9[ NKL FQ Y[UWMKYCTGM RT[EKUMCVYKGTFCLCE[CFF#EVKQP.KUVGPGT VJKU CFF RT[EKUMCVYKGTFCLCE[ _
  • 42. 9[U[ C FCPG Y RT[RCFMW YEK PKúEKC RT[EKUMW $ NWD$
  • 43. W [EKC MNCYKUC 4GVWTP Y RQNW VGMUVQY[O
  • 44. RWDNKE XQKF CEVKQP2GTHQTOGF #EVKQP'XGPV GXGPV ] 5VTKPI CR[VCPKG 74.'PEQFGTGPEQFG RQNGCR[VCPKCIGV6GZV 2CTCOGVT[9[UWMKYCPKC =? INQYPG#FTGU[ 2CTCOGVT[9[UWMKYCPKCRQDKGT)NQYPG#FTGU[ 2QOKPKúV[ QUVC CFTGU *QV$QV QUVCVPK YRKU RQPKGYC Y EGNW Y[ YKGVNGPKC Y[PKMÎY Y[UWMKYCTMC VC W [YC MQFW Y LG[MW ,CXC5ETKRV NCVGIQ VG RQPK GL Y[UVúRWLG Y[TC GPKG NGPIVJ HQT KPV K KINQYPG#FTGU[NGPIVJ K ] VT[ ]
  • 45. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 949 Rysunek 21.1. Aplet SearchApplet pozwala użytkownikom na wprowadzenie jednego poszukiwanego ciągu znaków, wykorzystanego następnie w trzech różnych wyszukiwarkach internetowych Rysunek 21.2. Zatwierdzenie zapytania powoduje wyświetlenie obok siebie wyników wyszukiwania, pochodzących z trzech różnych wyszukiwarek 2CTCOGVT[9[UWMKYCPKC CFTGU INQYPG#FTGU[=K? -NCUC 5GCTEJ5RGE VYQT[ CFTGU[ 74. Y RQUVCEK Y[OCICPGL RTG MKNMC TÎ P[EJ RQYUGEJPKG W [YCP[EJ Y[UWMYKCTGM KPVGTPGVQY[EJ 74. UGCTEJ74. PGY 74. CFTGUWVYQT#FTGU74. CR[VCPKG 5VTKPI PCYC4COMK TGUWNVU K IGV#RRNGV%QPVGZV UJQYQEWOGPV UGCTEJ74. PCYC4COMK _ ECVEJ /CNHQTOGF74.'ZEGRVKQP OWG ]_ _ _ _ Listing 21.2. ParametryWyszukiwania.java
  • 47. OC C MNCUC QMTG NCLæEC URQUÎD VYQTGPKC RQUWMKYCPGIQ EKæIW
  • 48. Y[MQT[UV[YCPGIQ Y RT[RCFMW QMTG NQPGL Y[UWMKYCTMK
  • 49. 2
  • 50. -QF[ CEGTRPKúVG RQNUMKGL GF[ELK
  • 51. 950 Część III n Programowanie aplikacji działających po stronie serwera
  • 52. MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
  • 55. /CTV[ *CNN CPF .CTT[ $TQYP
  • 56. RWDNKE ENCUU 2CTCOGVT[9[UWMKYCPKC ] RTKXCVG 5VTKPI PCYC CFTGU74. PCEPKM.KED[9[PKMQY RTKXCVG UVCVKE 2CTCOGVT[9[UWMKYCPKC=? INQYPG#FTGU[ ] PGY 2CTCOGVT[9[UWMKYCPKC IQQING JVVRYYYIQQINGEQOUGCTEJ!S PWO PGY 2CTCOGVT[9[UWMKYCPKC KPHQUGGM JVVRKPHQUGGMIQEQO6KVNGU!SV PJ PGY 2CTCOGVT[9[UWMKYCPKC N[EQU JVVRN[EQURTQN[EQUEQOEIKDKP RWTUWKV!SWGT[ OCZJKVU PGY 2CTCOGVT[9[UWMKYCPKC JQVDQV JVVRYYYJQVDQVEQO!/6 % _ RWDNKE 2CTCOGVT[9[UWMKYCPKC 5VTKPI PCYC 5VTKPI CFTGU74. 5VTKPI PCEPKM.KED[9[PKMQY ] VJKUPCYC PCYC VJKUCFTGU74. CFTGU74. VJKUPCEPKM.KED[9[PKMQY PCEPKM.KED[9[PKMQY _ RWDNKE 5VTKPI WVYQT#FTGU74. 5VTKPI UGCTEJ5VTKPI 5VTKPI NKEDC9[PKMQY ] TGVWTP CFTGU74. UGCTEJ5VTKPI PCEPKM.KED[9[PKMQY NKEDC9[PKMQY _ RWDNKE 5VTKPI RQDKGT0CYG ] TGVWTP PCYC _ RWDNKE UVCVKE 2CTCOGVT[9[UWMKYCPKC=? RQDKGT)NQYPG#FTGU[ ] TGVWTP INQYPG#FTGU[ _ _ Listing 21.3. RownolegleWyszukiwania.html 1%6;2' *6/. 27$.+% 9%6 *6/. (TCOGUGV'0 *6/. *'# 6+6.' 9[PKMK TÎYPQNGING Y[MQPCP[EJ CR[VC FQ YKGNW Y[UWMKYCTGM KPVGTPGVQY[EJ6+6.' *'#
  • 57. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 951 (4#/'5'6 4195
  • 58. (4#/' 54% 4COMC#RNGVWJVON 5%41..+0) 01 (4#/'5'6 %1.5
  • 59. (4#/' 54% 4COMC)QQINGJVON 0#/' TGUWNVU (4#/' 54% 4COMC+PHQUGGMJVON 0#/' TGUWNVU (4#/' 54% 4COMC.[EQUJVON 0#/' TGUWNVU (4#/'5'6 (4#/'5'6 Listing 21.4. RamkaApletu.html 1%6;2' *6/. 27$.+% 9%6 *6/. 6TCPUKVKQPCN'0 *6/. *'# 6+6.' 4COMC CRNGVW U W æEGIQ FQ Y[UWMKYCPKC KPHQTOCELK6+6.' *'# $1; $)%1.14 9*+6' %'06'4 #22.'6 %1' #RNGV9[UWMKYCPKCENCUU 9+6* *'+)*6 $ 6GP RT[M CF Y[OCIC W [EKC RTGINæFCTMK QDU WIWLæEGL Lú[M ,CXC$ #22.'6 %'06'4 $1; *6/. 21.3. Wykorzystywanie metody GET oraz przetwarzanie wyników w sposób bezpośredni (tunelowanie HTTP) W poprzednim przykładzie aplet informował przeglądarkę o konieczności wyświetlenia w określonej ramce danych wynikowych pochodzących z programu działającego po stronie serwera. Wykorzystywanie przeglądarki do wyświetlania wyników jest całkiem rozsądne podczas korzystania z ju działających usług, poniewa większość programów CGI została skonfigurowana w celu zwracania wyników w postaci dokumentów HTML. Tym niemniej, jeśli tworzy się zarówno aplikację klienta, jak te część obsługującą proces po stronie ser- wera, marnotrawstwem wydaje się wysyłanie wyników w postaci całego dokumentu HTML. W niektórych wypadkach ogromnym udogodnieniem byłaby mo liwość wysyłania danych do ju działającego apletu. Aplet mógłby następnie zaprezentować otrzymane dane w for- mie wykresu lub w innej dowolnej postaci. Takie podejście niekiedy jest nazywane tunelo- waniem HTTP, poniewa własny protokół u ywany do komunikacji osadzony jest we- wnątrz pakietów HTTP stosowanych podczas przekazywania przez serwery pośredniczące szyfrowania, przekierowywania przez serwer, przekazywania przez zapory sieciowe itp. Istnieją dwie główne odmiany takiej metody. Obie wykorzystują klasę 74.%QPPGEVKQP w celu otwarcia strumienia wejściowego przy u yciu danego adresu URL. Ró nica tkwi w rodzaju wykorzystywanego strumienia. Pierwszą mo liwością jest u ycie strumienia $WHHGTGF+PRW
  • 60. 952 Część III n Programowanie aplikacji działających po stronie serwera V5VTGCO lub innego strumienia niskopoziomowego, pozwalającego na odczytanie danych binarnych lub danych w postaci kodu ASCII, pochodzących z dowolnego programu dzia- łającego po stronie serwera. Ta metoda zostanie opisana w pierwszym punkcie tego pod- rozdziału. Druga mo liwość polega na wykorzystaniu strumienia 1DLGEV+PRWV5VTGCO w celu bezpośredniego odczytania wysokopoziomowych struktur danych. Zostanie ona opisana w drugim punkcie tego podrozdziału. Metoda ta jest mo liwa do wykorzystania jedynie wtedy, gdy program działający po stronie serwera jest równie napisany przy u yciu języka programowania Java. Odczytywanie danych binarnych oraz danych tekstowych Aplet mo e odczytywać dane przesłane przez serwer. W tym celu musi zostać najpierw utworzony obiekt klasy 74.%QPPGEVKQP, u ywającej adresu URL programu działającego po stronie serwera. Następnie musi dołączony zostać do niego strumień klasy $WHHGTGF+PRWV 5VTGCO. W celu zaimplementowania tej metody w aplikacji klienta konieczne jest wykona- nie siedmiu głównych czynności, opisanych po kolei poni ej. W przedstawionym opisie pominięty został kod znajdujący się po stronie serwera, poniewa zdefiniowany kod klienta działa z dowolnym programem pracującym na serwerze lub ze statyczną stroną WWW. Zwróć uwagę, e wiele operacji na strumieniach generuje wyjątek klasy +1'ZEGRVKQP, dla- tego te przedstawione poni ej instrukcje muszą być umieszczone w bloku VT[ ECVEJ. 1. Utworzenie obiektu URL wskazującego na domowy serwer apletu Do konstruktora URL mo na przekazać bezwzględny adres URL (na przykład w postaci http://serwer/sciezka), jednak, z tego względu, e ograniczenia spowodowane zabezpieczeniami uniemo liwiają połączenia wykonywane z apletów do serwerów innych ni ten, na którym są one umieszczone, bardziej sensowne wydaje się utworzenie adresu URL bazującego na nazwie serwera, z którego został on pobrany. 74. DKGCEC5VTQPC IGV%QFG$CUG 5VTKPI RTQVQMQN DKGCEC5VTQPCIGV2TQVQEQN 5VTKPI UGTYGT DKGCEC5VTQPCIGV*QUV KPV RQTV DKGCEC5VTQPCIGV2QTV 5VTKPI RT[TQUVGM#FTGUW UGTXNGV2GYKGP5GTYNGV 74. CFTGU74. PGY 74. RTQVQMQN UGTYGT RQTV RT[TQUVGM#FTGUW 2. Utworzenie obiektu URLConnection Metoda QRGP%QPPGEVKQP, zdefiniowana w klasie URL, powoduje zwrócenie obiektu 74.%QPPGEVKQP. Obiekt ten będzie następnie wykorzystany w celu pobrania strumieni wykorzystywanych do komunikacji. 74.%QPPGEVKQP RQNCEGPKG CFTGU74.QRGP%QPPGEVKQP 3. Nakazanie przeglądarce, aby nie umieszczała danych dołączonych do adresu URL w swojej pamięci podręcznej Pierwszą czynnością konieczną do wykonania, wykorzystując obiekt 74.%QPPGEVKQP jest wskazanie, aby dane przekazywane za jego pomocą nie były nigdy umieszczane przez przeglądarkę w pamięci podręcznej. Tego rodzaju podejście gwarantuje uzyskanie za ka dym razem najświe szych wyników. RQNCEGPKGUGV7UG%CEJGU HCNUG
  • 61. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 953 4. Ustawienie wszystkich po ądanych nagłówków HTTP Jeśli chce się ustawić nagłówki ądania HTTP (patrz podrozdział 19.7.), mo na wykorzystać metodę o nazwie UGV4GSWGUV2TQRGTV[. RQNCEGPKGUGV4GSWGUV2TQRGTV[ PCINQYGM YCTVQUE 5. Utworzenie strumienia wejściowego Istnieje szereg odpowiednich strumieni, lecz najpowszechniej wykorzystywanym jest strumień $WHHGTGF4GCFGT. Połączenie z serwerem WWW ustanawiane jest w chwili tworzenia strumienia wejściowego. $WHHGTGF4GCFGT UVTWOKGP9GLUEKQY[ PGY $WHHGTGF4GCFGT PGY +PRWV5VTGCO4GCFGT RQNCEGPKGIGV+PRWV5VTGCO 6. Odczytanie wszystkich wierszy dokumentu Specyfikacja HTTP wymaga zamknięcia przez serwer połączenia po zakończeniu wysyłania dokumentu. W wypadku zamknięcia połączenia, u ycie metody o nazwie TGCF.KPG powoduje zwrócenie wartości PWNN. Dlatego te nale y zwyczajnie odczytywać dane wejściowe, a do czasu uzyskania wartości PWNN. 5VTKPI YKGTU YJKNG YKGTU UVTWOKGP9GLUEKQY[TGCF.KPG PWNN ] TQD%QU2T[7[EKW YKGTU _ 7. Zamknięcie strumienia wejściowego UVTWOKGP9GLUEKQY[ENQUG Odczytywanie struktur danych zachowanych przy u yciu serializacji Przedstawione w poprzednich rozdziałach pomysły prezentowały sposoby wymiany infor- macji pomiędzy apletem a dowolnym programem działającym po stronie serwera lub te ze statyczną stroną WWW. Niemniej jednak, kiedy aplet komunikuje się z serwletem, istnieje jeszcze lepszy sposób wymiany danych. Zamiast wysyłania ich w postaci binarnej lub tek- stowej, serwlet mo e przesyłać dowolne struktury danych u ywając w tym celu mechanizmu serializacji, udostępnianego standardowo przez język Java. Aplet następnie mo e odczytać te dane za pomocą jednego wywołania metody TGCF1DLGEV. Nie wymagana jest w takim wypadku mudna analiza danych. Poni ej przedstawione zostały czynności konieczne do implementacji tunelowania HTTP Aplikacja działająca po stronie klienta W celu odczytania struktur danych, zachowanych przy u yciu mechanizmu serializacji, przesyłanych przez serwlet, aplet musi wykonać siedem poni ej przedstawionych czynności. Jedynie czynności przedstawione w punktach 5. oraz 6. ró nią się od tych, wymaganych podczas odczytywania danych tekstowych opisanych poprzednio. Opis czynności został znacznie uproszczony, dzięki pominięciu bloków VT[ ECVEJ. 1. Utworzenie obiektu URL wskazującego na domowy serwer apletu Podobnie jak poprzednio, poniewa adres URL musi wskazywać na serwer, z którego pobrany został aplet, bardziej sensowne jest określenie adresu względnego i pozwolenie na skonstruowanie go w sposób automatyczny.
  • 62. 954 Część III n Programowanie aplikacji działających po stronie serwera 74. DKGCEC5VTQPC IGV%QFG$CUG 5VTKPI RTQVQMQN DKGCEC5VTQPCIGV2TQVQEQN 5VTKPI UGTYGT DKGCEC5VTQPCIGV*QUV KPV RQTV DKGCEC5VTQPCIGV2QTV 5VTKPI RT[TQUVGM#FTGUW UGTXNGV2GYKGP5GTYNGV 74. CFTGU74. PGY 74. RTQVQMQN UGTYGT RQTV RT[TQUVGM#FTGUW 2. Utworzenie obiektu URLConnection Metoda QRGP%QPPGEVKQP, zdefiniowana w klasie URL, powoduje zwrócenie obiektu 74.%QPPGEVKQP. Obiekt ten będzie następnie wykorzystany w celu pobrania strumieni wykorzystywanych do komunikacji. 74.%QPPGEVKQP RQNCEGPKG CFTGU74.QRGP%QPPGEVKQP 3. Nakazanie przeglądarce, aby nie umieszczała danych dołączonych do adresu URL w swojej pamięci podręcznej Pierwszą czynnością konieczną do wykonania jest wskazanie, dzięki wykorzystaniu obiektu 74.%QPPGEVKQP, aby dane przekazywane za jego pomocą nie były nigdy umieszczane przez przeglądarkę w pamięci podręcznej. Tego rodzaju podejście gwarantuje uzyskanie najświe szych wyników za ka dym razem. RQNCEGPKGUGV7UG%CEJGU HCNUG 4. Ustawienie wszystkich po ądanych nagłówków HTTP Jeśli chce się ustawić nagłówki ądania HTTP (patrz podrozdział 19.7), mo na w tym celu u yć metody o nazwie UGV4GSWGUV2TQRGTV[. RQNCEGPKGUGV4GSWGUV2TQRGTV[ PCINQYGM YCTVQUE 5. Utworzenie strumienia wejściowego klasy ObjectInputStream Konstruktor tej klasy pobiera strumień danych nieprzetworzonych, udostępniany przez obiekt klasy 74.%QPPGEVKQP. Połączenie z serwerem WWW ustanawiane jest w momencie utworzenia strumienia wejściowego. 1DLGEV+PRWV5VTGCO UVTWOKGP9GLUEKQY[ PGY 1DLGEV+PRWV5VTGCO RQNCEGPKGIGV+PRWV5VTGCO 6. Odczytanie struktur danych przy u yciu metody readObject Metoda ta zwraca obiekt klasy 1DLGEV, dlatego te konieczne jest wykonanie rzutowania na bardziej określoną klasę obiektu przesyłanego w rzeczywistości przez serwer. 2GYPC-NCUC YCTVQUE 2GYPC-NCUCUVTWOKGP9GLUEKQY[TGCF1DLGEV TQD%QU2T[7[EKW YCTVQUE 7. Zamknięcie strumienia wejściowego UVTWOKGP9GLUEKQY[ENQUG Aplikacja działająca po stronie serwera Aby wysłać do apletu struktury danych zachowane przy u yciu serializacji, serwlet musi wykonać cztery poni ej przedstawione czynności. Zało ono, e metody FQ)GV oraz FQ2QUV dysponują przekazanymi w postaci argumentów obiektami TGSWGUV oraz TGURQPUG klas *VVR5GTXNGV4GSWGUV oraz *VVR5GTXNGV4GURQPUG. Podobnie jak poprzednio, przedstawione czynności zostały uproszczone przez pominięcie wymaganych bloków VT[ ECVEJ.
  • 63. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 955 1. Zasygnalizowanie przesyłania danych binarnych Jako typ MIME przesyłanej odpowiedzi konieczne jest określenie CRRNKECVKQPZLCXCUGTKCNKGFQDLGEV. Jest to standardowy typ MIME wskazujący obiekty zakodowane za pomocą strumienia 1DLGEV1WVRWV5VTGCO. Jednak w praktyce, z tego względu, e to aplet (a nie przeglądarka) odczytuje dane, określenie tego typu nie jest tak bardzo wa ne. Więcej informacji na temat typów MIME zostało przedstawionych w podrozdziale 19.10, „Odpowiedź serwera: Nagłówki odpowiedzi HTTP”. 5VTKPI TQFCLCYCTVQUEK CRRNKECVKQPZLCXCUGTKCNKGFQDLGEV TGURQPUGUGV%QPVGPV6[RG TQFCLCYCTVQUEK 2. Utworzenie obiektu klasy ObjectOutputStream 1DLGEV1WVRWV5VTGCO FCPG9[LUEKQYG PGY 1DLGEV1WVRWV5VTGCO TGURQPUGIGV1WVRWV5VTGCO 3. Zapisanie struktury danych wykorzystując metodę writeObject Większość, obsługiwanych wewnętrznie przez język Java, struktur danych mo e być wysłanych przy u yciu metody YTKVG1DLGEV. Jednak e klasy utworzone samodzielnie muszą implementować interfejs 5GTKCNKCDNG. To dość proste do spełnienia wymaganie, poniewa interfejs ten nie definiuje ądanych metod. Zwyczajnie nale y zadeklarować klasę implementującą wspomniany interfejs. 2GYPC-NCUC YCTVQUE PGY 2GYPC-NCUC FCPG9[LUEKQYGYTKVG1DLGEV YCTVQUE 4. Opró nienie strumienia w celu zagwarantowania wysłania całej zawartości do aplikacji klienta FCPG9[LUEKQYGHNWUJ W kolejnym podrozdziale przedstawimy przykład zastosowania tunelowania HTTP. 21.4. Przeglądarka ądań wysyłanych do serwera, u ywająca serializacji obiektów oraz tunelowania HTTP Wielu ludzi interesuje się rodzajem zapytań wysyłanych do najpopularniejszych wyszuki- warek internetowych. Wynika to po części z ciekawości („Czy naprawdę a 64 procent za- pytań zadanych w wyszukiwarce AltaVista pochodzi od pracodawców poszukujących pro- gramistów znających technologię Java?”), a po części z dą eń programistów do dostosowania zawartości tworzonych przez nich witryn do najczęściej zadawanych zapytań, co powoduje zazwyczaj zwiększenie ich pozycji w rankingu wyszukiwarek. W tym podrozdziale przedstawiono wykorzystanie połączenia aplikacji apletu oraz serwle- tu, słu ącego do zaprezentowania fikcyjnej wyszukiwarki o nazwie super-wyszukiwarka- internetowa.com, która na bie ąco wyświetla przykładowe zapytania wysyłane przez u yt- kowników. Na listingu 21.5 pokazany został główny aplet wykorzystujący zewnętrzną klasę
  • 64. 956 Część III n Programowanie aplikacji działających po stronie serwera (przedstawioną na listingu 21.6) do pobierania zapytań w wątku działającym w tle. Po za- inicjowaniu procesu przez u ytkownika, co pół sekundy aplet umieszcza w przewijanym obszarze tekstowym przykładowe zapytanie. Zostało to przedstawione na rysunku 21.3. Na koniec listing 21.7. prezentuje kod aplikacji serwletu tworzącego zapytania po stronie ser- wera. Powoduje on wygenerowanie losowego przykładu rzeczywistych, zadawanych przez u ytkownika zapytań i podczas ka dego ądania wysyła do klienta 50 z nich. Niektóre szczegóły dotyczące zastosowanych metod zostały omówione w rozdziale 19. Osoby, które będą chciały pobrać kod źródłowy apletu oraz serwletu z archiwum umiesz- czonego pod adresem: ftp://ftp.helion.pl/przyklady/serinp.zip i będą próbowały uruchomić aplikację samodzielnie, muszą wiedzieć, e będzie ona działać jedynie wtedy, gdy wyświe- tlona zostanie główna strona HTML przy wykorzystaniu protokołu HTTP (na przykład u ywając w tym celu adresu URL postaci http://…). Pobranie strony bezpośrednio z dysku zakończy się niepowodzeniem, poniewa aplet w celu komunikowania się z serwletem łączy się ze swoim katalogiem domowym. Poza tym, mówiąc ogólnie, próba nawiązania połą- czenia przy u yciu obiektu 74.%QPPGEVKQP w wypadku apletów, które nie korzystają z połą- czenia HTTP, nie powiedzie się. Listing 21.5. PokazZapytania.java KORQTV LCXCCRRNGV#RRNGV KORQTV LCXCCYV
  • 65. KORQTV LCXCCYVGXGPV
  • 66. KORQTV LCXCKQ
  • 67. KORQTV LCXCPGV
  • 69. #RNGV QFE[VWLæE[ VCDNKEú C EWEJÎY PCMQY[EJ
  • 70. WVYQTQPæ RTG QDKGMV MNCU[ 3WGT[%QNNGEVKQP K WOKGUECLæE[ Læ Y QDUCTG
  • 71. 6GZV#TGC -NCUC 3WGT[%QNNGEVKQP RTGU[ C FCPG RT[ W [EKW UGTKCNKCELK
  • 72. 2
  • 73. -QF[ CEGTRPKúVG RQNUMKGL GF[ELK
  • 74. MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
  • 77. /CTV[ *CNN CPF .CTT[ $TQYP
  • 78. RWDNKE ENCUU 2QMCCR[VCPKC GZVGPFU #RRNGV KORNGOGPVU #EVKQP.KUVGPGT 4WPPCDNG ] RTKXCVG 6GZV#TGC QDUCTCR[VCP RTKXCVG $WVVQP RT[EKUM5VCTV RT[EKUM5VQR RT[EKUM%[UE RTKXCVG -QNGMELCCR[VCP DKGCEGCR[VCPKC RTKXCVG -QNGMELCCR[VCP MQNGLPGCR[VCPKC RTKXCVG DQQNGCP KU7TWEJQOKQP[ HCNUG RTKXCVG 5VTKPI CFTGU UGTXNGVEYR)GPGTCVQTCR[VCP RTKXCVG 74. DKGCEC5VTQPC RWDNKE XQKF KPKV ] UGV$CEMITQWPF %QNQTYJKVG UGV.C[QWV PGY $QTFGT.C[QWV QDUCTCR[VCP PGY 6GZV#TGC QDUCTCR[VCPUGV(QPV PGY (QPV 5GTKH (QPV2.#+0 CFF QDUCTCR[VCP $QTFGT.C[QWV%'06'4 2CPGN RCPGN2T[EKUMQY PGY 2CPGN
  • 79. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 957 Rysunek 21.3. Wynik działania apletu PokazZapytania (QPV EEKQPMC2T[EKUMW PGY (QPV 5CPU5GTKH (QPV$1. RT[EKUM5VCTV PGY $WVVQP 5VCTV RT[EKUM5VCTVUGV(QPV EEKQPMC2T[EKUMW RT[EKUM5VCTVCFF#EVKQP.KUVGPGT VJKU RCPGN2T[EKUMQYCFF RT[EKUM5VCTV RT[EKUM5VQR PGY $WVVQP 5VQR RT[EKUM5VQRUGV(QPV EEKQPMC2T[EKUMW RT[EKUM5VQRCFF#EVKQP.KUVGPGT VJKU RCPGN2T[EKUMQYCFF RT[EKUM5VQR RT[EKUM%[UE PGY $WVVQP %[UE RT[EKUM%[UEUGV(QPV EEKQPMC2T[EKUMW RT[EKUM%[UECFF#EVKQP.KUVGPGT VJKU RCPGN2T[EKUMQYCFF RT[EKUM%[UE CFF RCPGN2T[EKUMQY $QTFGT.C[QWV5176* DKGCEC5VTQPC IGV%QFG$CUG æFC GUVCYW RT[M CFQY[EJ CR[VC 5æ QPG RQDKGTCPG RT[ W [EKW YæVMW FKC CLæEGIQ Y VNG C CRNGV URTCYFC E[ LGIQ FKC CPKG QUVC Q CMQ EQPG RTGF RQFLúEKGO RTÎD[ RQDTCPKC C EWEJÎY PCMQY[EJ DKGCEGCR[VCPKC PGY -QNGMELCCR[VCP CFTGU DKGCEC5VTQPC MQNGLPGCR[VCPKC PGY -QNGMELCCR[VCP CFTGU DKGCEC5VTQPC _
  • 81. ,G NK QUVCPKG YEK PKúV[ RT[EKUM 5VCTV U[UVGO
  • 82. WTWEJQOK YæVGM FKC CLæE[ Y VNG Y[ YKGVNCLæE[ CR[VCPKC Y QDUCTG
  • 84. CVT[OWLG FKC CPKG RTQEGUW C %[ è QRTÎ PKC
  • 86. 958 Część III n Programowanie aplikacji działających po stronie serwera RWDNKE XQKF CEVKQP2GTHQTOGF #EVKQP'XGPV GXGPV ] KH GXGPVIGV5QWTEG RT[EKUM5VCTV ] KH KU7TWEJQOKQP[ ] 6JTGCF RTQEGU9[UYKGVNCLCE[ PGY 6JTGCF VJKU KU7TWEJQOKQP[ VTWG QDUCTCR[VCPUGV6GZV RTQEGU9[UYKGVNCLCE[UVCTV UJQY5VCVWU 2TQEGU Y[ YKGVNCLæE[ CR[VCPKC QUVC WTWEJQOKQP[ _ GNUG ] UJQY5VCVWU 2TQEGU Y[ YKGVNCLæE[ CR[VCPKC LW FKC C _ _ GNUG KH GXGPVIGV5QWTEG RT[EKUM5VQR ] KU7TWEJQOKQP[ HCNUG UJQY5VCVWU 2TQEGU Y[ YKGVNCLæE[ CR[VCPCK QUVC CVT[OCP[ _ GNUG KH GXGPVIGV5QWTEG RT[EKUM%[UE ] QDUCTCR[VCPUGV6GZV _ _
  • 88. 2TQEGU FKC CLæE[ Y VNG RQDKGTC QDKGMV DKGCEGCR[VCPKC
  • 89. K EQ RÎ UGMWPF[ WOKGUEC LGFPQ RTGEJQY[YCP[EJ Y PKO CR[VC
  • 90. PC FQNG QDUCTW VGMUVQYGIQ 2Q Y[ YKGVNGPKW YU[UVMKEJ CR[VC
  • 91. YæVGM MQRKWLG CYCTVQ è QDKGMVW
  • 93. DKGCEGCR[VCPKC Y[U[ C PQYG æFCPKG FQ UGTYGTC
  • 94. Y EGNW RQPQYPGIQ CRG PKGPKC QDKGMVW MQNGLPGCR[VCPKC K RQYVCTC EC [ RTQEGU
  • 95. RWDNKE XQKF TWP ] YJKNG KU7TWEJQOKQP[ ] RQMCCR[VCPKC DKGCEGCR[VCPKC DKGCEGCR[VCPKC MQNGLPGCR[VCPKC MQNGLPGCR[VCPKC PGY -QNGMELCCR[VCP CFTGU DKGCEC5VTQPC _ _ RTKXCVG XQKF RQMCCR[VCPKC -QNGMELCCR[VCP DKQTCR[VCP ] ,G NK æFCPKG QUVC Q Y[U CPG FQ UGTYGTC NGE PKG YTÎEK QP LGUEG Y[PKMÎY YVGF[ PCNG [ URTCYFCè EQ UGMWPFú E[ CFCPKG QUVC Q WMQ EQPG 2QYKPPQ FCTCè UKú FQ è TCFMQ NGE OQ G Y[UVúRQYCè Y RT[RCFMW DCTFQ YQNP[EJ RQ æEG UKGEKQY[EJ NWD RTGEKæ QP[EJ UGTYGTÎY YJKNG DKQTCR[VCPKU-QPKGE ] UJQY5VCVWU 1EGMKYCPKG PC FCPG UGTYGTC RCWC _ UJQY5VCVWU 1VT[OCPQ FCPG UGTYGTC 5VTKPI=? CR[VCPKC PWNN VT[ ] CR[VCPKC DKQTCR[VCPRQDKGTCR[VCPKC _ ECVEJ +1'ZEGRVKQP G ]_ 5VTKPI PCMMQPECYKGTUC P WOKG è PQY[ EKæI CR[VCPKC Y QDUCTG VGMUVQY[O EQ RÎ UGMWPF[ HQT KPV K KCR[VCPKCNGPIVJ K ] KH KU7TWEJQOKQP[ ] TGVWTP _ QDUCTCR[VCPCRRGPF CR[VCPKC=K? QDUCTCR[VCPCRRGPF PCMMQPECYKGTUC
  • 96. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 959 RCWC _ _ RWDNKE XQKF RCWC FQWDNG UGEQPFU ] VT[ ] 6JTGCFUNGGR NQPI UGEQPFU
  • 97. _ ECVEJ +PVGTTWRVGF'ZEGRVKQP KG ]_ _ _ Listing 21.6. KolekcjaZapytan.java KORQTV LCXCPGV
  • 100. 2Q WVYQTGPKW VGL MNCU[ YTCEC QPC PCV[EJOKCUV YCTVQ è
  • 101. Y RT[RCFMW OGVQF[ IGVCR[VCPKC LGUV VQ YCTVQ è PWNN C VQ Y RT[RCFMW KUCMQPEQPG YCTVQ è HCNUG
  • 102. 9 OKúF[ECUKG QUVCLG WVYQTQP[ YæVGM U W æE[ FQ RQDTCPKC EKæIÎY CR[VC UGTYGTC
  • 103. QFE[V[YCP[EJ C LGFP[O COCEJGO RT[ W [EKW QDKGMVW MNCU[
  • 104. 1DLGEV+PRWV5VTGCO 2Q RQDTCPKW EKæIÎY CR[VC Uæ QPG WOKGUECPG Y OKGPPGL
  • 105. QFE[V[YCPGL RTG OGVQFú IGVCR[VCPKC
  • 106. C YCTVQ è PCEPKMC KUCMQPEQPG QUVCLG OKGPKQPC PC VTWG
  • 107. -NCUC Y[MQT[UV[YCPC RTG CRNGV 5JQY3WGTKGU
  • 108. 2
  • 109. -QF[ CEGTRPKúVG RQNUMKGL GF[ELK
  • 110. MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
  • 113. /CTV[ *CNN CPF .CTT[ $TQYP
  • 114. RWDNKE ENCUU -QNGMELCCR[VCP KORNGOGPVU 4WPPCDNG ] RTKXCVG 5VTKPI=? CR[VCPKC RTKXCVG 5VTKPI=? V[OECUQYGCR[VCPKC RTKXCVG DQQNGCP KU-QPKGE HCNUG RTKXCVG 74. FCPG#FTGUW74. RWDNKE -QNGMELCCR[VCP 5VTKPI RT[TQUVGM74. 74. DKGCEC5VTQPC ] VT[ ] -QPKGEPG LGUV QMTG NGPKG LGF[PKG RT[TQUVMC CFTGUW 74. LCMQ G FCNUC Eú è CFTGUW QMTG NCPC LGUV PC RQFUVCYKG DKG æEGL UVTQP[ 5VTKPI RTQVQMQN DKGCEC5VTQPCIGV2TQVQEQN 5VTKPI JQUV DKGCEC5VTQPCIGV*QUV KPV RQTV DKGCEC5VTQPCIGV2QTV FCPG#FTGUW74. PGY 74. RTQVQMQN JQUV RQTV RT[TQUVGM74. 6JTGCF YCVGM2QDKGTCLCE[CR[VCPKC PGY 6JTGCF VJKU YCVGM2QDKGTCLCE[CR[VCPKCUVCTV _ ECVEJ /CNHQTOGF74.'ZEGRVKQP OHG ] KU-QPKGE VTWG _ _ RWDNKE XQKF TWP ] VT[ ] V[OECUQYGCR[VCPKC RQDKGTCR[VCPKC
  • 115. 960 Część III n Programowanie aplikacji działających po stronie serwera CR[VCPKC V[OECUQYGCR[VCPKC _ ECVEJ +1'ZEGRVKQP KQG ] V[OECUQYGCR[VCPKC PWNN CR[VCPKC PWNN _ KU-QPKGE VTWG _ RWDNKE 5VTKPI=? IGVCR[VCPKC ] TGVWTP CR[VCPKC _ RWDNKE DQQNGCP KU-QPKGE ] TGVWTP KU-QPKGE _ RWDNKE 5VTKPI=? RQDKGTCR[VCPKC VJTQYU +1'ZEGRVKQP ] 74.%QPPGEVKQP RQNCEGPKG FCPG#FTGUW74.QRGP%QPPGEVKQP 0CNG [ UKú WRGYPKè G RTGINæFCTMC PKG WOKGUEC VGIQ CFTGUW 74. Y RCOKúEK RQFTúEPGL 2TCIPKGO[ RTGEKG W[UMCè TÎ PG CR[VCPKC FNC MC FGIQ æFCPKC RQNCEGPKGUGV7UG%CEJGU HCNUG 0CNG [ W [è 1DLGEV+PRWV5VTGCO VCM CD[ OQ NKYG D[ Q LGFPQTCQYG QFE[VCPKG 5VTKPI=? 1DLGEV+PRWV5VTGCO KP PGY 1DLGEV+PRWV5VTGCO RQNCEGPKGIGV+PRWV5VTGCO VT[ ] OGVQFC TGCF1DLGEV YTCEC QDKGMV FNCVGIQ MQPKGEPG LGUV TWVQYCPKG PC TGE[YKUV[ QDKGMV 5VTKPI=? EKCIKCR[VCP 5VTKPI=?KPTGCF1DLGEV TGVWTP EKCIKCR[VCP _ ECVEJ %NCUU0QV(QWPF'ZEGRVKQP EPHG ] TGVWTP PWNN _ _ _ Listing 21.7. GeneratorZapytan.java RCEMCIG EYR KORQTV LCXCKQ
  • 119. 5GTYNGV VYQTæE[ VCDNKEG C EWEJÎY PCMQY[EJ CR[VCPKCOK
  • 120. K Y[U[ CLæE[ LG RT[ W [EKW QDKGMVW MNCU[ 1DLGEV1WVRWV5VTGCO FQ CRNGVW
  • 121. NWD KPPGIQ MNKGPVC PCRKUCPGIQ Y LG[MW ,CXC
  • 122. 2
  • 123. -QF[ CEGTRPKúVG RQNUMKGL GF[ELK
  • 124. MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
  • 127. /CTV[ *CNN CPF .CTT[ $TQYP
  • 128. RWDNKE ENCUU )GPGTCVQTCR[VCP GZVGPFU *VVR5GTXNGV ] RWDNKE XQKF FQ)GV *VVR5GTXNGV4GSWGUV TGSWGUV *VVR5GTXNGV4GURQPUG TGURQPUG
  • 129. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 961 VJTQYU 5GTXNGV'ZEGRVKQP +1'ZEGRVKQP ] DQQNGCP W[L0WOGTQYCPKC VTWG 5VTKPI PCEPKM0WOGTQYCPKC TGSWGUVIGV2CTCOGVGT WUG0WODGTKPI KH PCEPKM0WOGTQYCPKC PWNN ^^ PCEPKM0WOGTQYCPKCGSWCNU HCNUG ] W[L0WOGTQYCPKC HCNUG _ 5VTKPI V[RCYCTVQUEK CRRNKECVKQPZLCXCUGTKCNKGFQDLGEV TGURQPUGUGV%QPVGPV6[RG V[RCYCTVQUEK 1DLGEV1WVRWV5VTGCO QWV PGY 1DLGEV1WVRWV5VTGCO TGURQPUGIGV1WVRWV5VTGCO 5VTKPI=? CR[VCPKC IGVCR[VCPKC W[L0WOGTQYCPKC ,G NK Y[U[ C UKú PKGUVCPFCTFQYG UVTWMVWT[ FCP[EJ PCNG [ WRGYPKè UKú G QMTG NQPC QUVC C KORNGOGPVCELC KPVGTHGLUW UGTKCNKCELK KORNGOGPVU 5GTKCNKCDNG QWVYTKVG1DLGEV CR[VCPKC QWVHNWUJ _ RWDNKE XQKF FQ2QUV *VVR5GTXNGV4GSWGUV TGSWGUV *VVR5GTXNGV4GURQPUG TGURQPUG VJTQYU 5GTXNGV'ZEGRVKQP +1'ZEGRVKQP ] FQ)GV TGSWGUV TGURQPUG _ RTKXCVG 5VTKPI=? IGVCR[VCPKC DQQNGCP W[L0WOGTQYCPKC ] 5VTKPI=? CR[VCPKC PGY 5VTKPI=? HQT KPV K KCR[VCPKCNGPIVJ K ] CR[VCPKC=K? NQUQYGCR[VCPKG KH W[L0WOGTQYCPKC ] CR[VCPKC=K? K CR[VCPKC=K? _ _ TGVWTP CR[VCPKC _ 4GE[YKUVG CR[VCPKC Y[U[ CPG RTG NWFK RTKXCVG 5VTKPI NQUQYGCR[VCPKG ] 5VTKPI=? RQNQGPKG ] )FKG 9 LCMK URQUQD _ 5VTKPI=? E[PPQUE ] OQIG QFUWMCE OQIG PCNGE OQIG RQDTCE _ 5VTKPI=? TQFNQ ] KPHQTOCELG CUQD[ FCPG QFYQNCPKC _ 5VTKPI=? RT[KOGM ] PC VGOCV QFPQUCEG UKG FQ FQV[ECEG _ 5VTKPI=? VGOCV ] MUKCMK 5GTYKU[ KPVGTPGVQYG2TQITCOQYCPKG VGMUVW QRKUWLCEGIQ UGTYNGV[ QTC UVTQP[ ,52 UGTYNGVQY QTC UVTQP ,CXC5GTXGT 2CIGU UGTYNGVQY QTC UVTQP ,52 MUKCMK 5GTYKU[ KPVGTPGVQYG2TQITCOQYCPKG 9[FCPKG 5GTYKU[ KPVGTPGVQYG2TQITCOQYCPKG 9[FCPKG RTQITCOQYCPKC UGTYNGVQY VGEJPQNQIKK ,CXC5GTXGT 2CIGU UVTQP ,52 CNVGTPCV[YP[ OGVQF RTQITCOQYCPKC %)+ RT[ W[EKW LG[MC ,CXC RTQITCOQY Y LG[MW ,CXC FKCNCLCE[EJ RQ UVTQPKG UGTYGTC _ 5VTKPI=? CMQPEGPKG ] ! ! ! ! ! ! _ 5VTKPI=?=? UCDNQP[FCP
  • 130. 962 Część III n Programowanie aplikacji działających po stronie serwera ] RQNQGPKG E[PPQUE TQFNQ RT[KOGM VGOCV CMQPEGPKG _ 5VTKPI CR[VCPKG HQT KPV K KUCDNQP[FCPNGPIVJ K ] CR[VCPKG CR[VCPKG NQUQY['NGOGPV UCDNQP[FCP=K? _ TGVWTP CR[VCPKG _ RTKXCVG 5VTKPI NQUQY['NGOGPV 5VTKPI=? NCPEWEJ[ ] KPV KPFGMU KPV /CVJTCPFQO
  • 131. NCPEWEJ[NGPIVJ TGVWTP NCPEWEJ[=KPFGMU? _ _ 21.5. Wysyłanie danych przy u yciu metody POST i przetwarzanie wyników wewnątrz apletu (tunelowanie HTTP) Podczas przesyłania danych przy u yciu metody )'6, aplet ma dwie mo liwości wyświetlenia wyników. Mo e on nakazać wykonanie tej czynność przeglądarce (utworzyć odpowiedni obiekt adresu URL, a następnie wywołać metodę #RRNGV%QPVGZV UJQYQEWOGPV) lub te przetworzyć dane samodzielnie (utworzyć obiekt adresu URL, pobrać obiekt klasy 74.%QP PGEVKQP, otworzyć strumień wejściowy i odczytać dane). Metody te zostały omówione, od- powiednio, w podrozdziale 21.1. oraz 21.3. W przypadku wykorzystywania danych 2156 mo liwe jest wykorzystanie tylko drugiej metody, poniewa konstruktor obiektu URL nie zawiera metody pozwalającej na skojarzenie z nim danych przesyłanych przy u yciu metody 2156. Przekazywanie danych w ten sposób ma kilka zalet, ale te niedogodności w porów- naniu z u ywaniem metody )'6. Do dwóch najwa niejszych niedogodności nale ą: koniecz- ność umieszczenia programu działającego po stronie serwera na tym samym komputerze co aplet oraz konieczność wyświetlania danych przy u yciu apletu. Nie istnieje bowiem mo - liwość przekazania kodu HTML do przeglądarki. Do zalet natomiast nale y to, e program działający po stronie serwera mo e być prostszy (nie trzeba umieszczać wyników w kodzie HTML), zaś aplet mo e odświe ać wyświetlane dane bez potrzeby ponownego odczytywa- nia strony. Co więcej, aplety wykorzystujące do komunikacji metodę 2156, mogą stosować w celu wysyłania danych do serwletu strumienie przekazujące dane zapisane za pomocą se- rializacji, oprócz ju opisanej wcześniej, analogicznej metody podczas pobierania danych z serwletu. To powa ny plus, poniewa wykorzystywanie danych serializowanych oraz tu- nelowania HTTP pozwala na ominięcie zabezpieczeń stosowanych na zaporach sieciowych, aby uniemo liwić bezpośrednie połączenia pomiędzy gniazdami. Aplety wykorzystujące metodę )'6 mogą odczytywać dane zapisywane w ten sposób (patrz podrozdział 21.4), lecz nie są w stanie ich wysyłać, gdy niemo liwe jest dołączenie do adresów URL dowolnych danych binarnych.
  • 132. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 963 Aby umo liwić wysyłanie z apletów do serwera danych przy u yciu metody 2156 oraz od- czytywanie wyników, wymagane jest wykonanie trzynastu czynności przedstawionych po- ni ej. Chocia ich liczba jest dość du a, to jednak ka da z czynności jest względnie prosta. Kod został znacznie uproszczony dzięki pominięciu bloków postaci VT[ ECVEJ, w któ- rych powinny zostać umieszczone wszystkie instrukcje. 1. Utworzenie obiektu URL wskazującego na domowy serwer apletu Podobnie jak poprzednio, ze względu na to, e adres URL musi wskazywać na serwer, z którego pobrany został aplet, bardziej sensowne jest określenie adresu względnego i pozwolenie na skonstruowanie go w sposób automatyczny. 74. DKGCEC5VTQPC IGV%QFG$CUG 5VTKPI RTQVQMQN DKGCEC5VTQPCIGV2TQVQEQN 5VTKPI UGTYGT DKGCEC5VTQPCIGV*QUV KPV RQTV DKGCEC5VTQPCIGV2QTV 5VTKPI RT[TQUVGM#FTGUW UGTXNGV2GYKGP5GTYNGV 74. CFTGU74. PGY 74. RTQVQMQN UGTYGT RQTV RT[TQUVGM#FTGUW 2. Utworzenie obiektu URLConnection Obiekt ten będzie następnie wykorzystany w celu pobrania strumieni wykorzystywanych do komunikacji. 74.%QPPGEVKQP RQNCEGPKG CFTGU74.QRGP%QPPGEVKQP 3. Nakazanie przeglądarce, aby nie umieszczała danych dołączonych do adresu URL w swojej pamięci podręcznej RQNCEGPKGUGV7UG%CEJGU HCNUG 4. Uzyskanie od serwera pozwolenia na wysyłanie danych, a nie jedynie odbieranie wyników RQNCEGPKGUGVQ1WVRWV VTWG 5. Utworzenie strumienia ByteArrayOutputStream, wykorzystywanego do buforowania danych, które będą wysyłane do serwera Strumień ByteArrayOutputStream wykorzystywany jest w celu określenia rozmiaru danych wyjściowych, tak aby aplet był w stanie wysłać nagłówek %QPVGPV.GPIVJ, wymagany podczas ądań typu 2156. Konstruktor klasy $[VG#TTC[1WVRWV5VTGCO wskazuje początkowy rozmiar bufora danych, lecz jego podanie nie jest wymagane, gdy rozmiar bufora będzie zwiększany w razie potrzeby w sposób automatyczny. $[VG#TTC[1WVRWV5VTGCO UVWOKGP$KPCTP[ PGY $[VG#TTC[1WVRWV5VTGCO 6. Skojarzenie strumienia wyjściowego z obiektem klasy ByteArrayOutputStream Wysłając normalne dane formularza, nale y wykorzystać obiekt klasy 2TKPV9TKVGT. W celu wysłania struktur danych zachowanych przy u yciu serializacji, trzeba wykorzystać w zamian obiekt klasy 1DLGEV1WVRWV5VTGCO. 2TKPV9TKVGT FCPG9[LUEKQYG PGY 2TKPV9TKVGT UVTWOKGP$KPCTP[ VTWG 7. Umieszczenie danych w buforze W przypadku normalnych danych formularza nale y wykorzystać metodę RTKPV. Natomiast w celu wysłania obiektów wysokiego poziomu, zachowanych przy u yciu serializacji, metodę YTKVG1DLGEV.
  • 133. 964 Część III n Programowanie aplikacji działających po stronie serwera 5VTKPI YCT 74.'PEQFGTGPEQFG 2GYPC9CTVQUE 5VTKPI YCT 74.'PEQFGTGPEQFG 2GYPC9CTVQUE 5VTKPI FCPG RCTCO YCT RCTCO YCT YTQE WYCIG PC PCM FCPG9[LUEKQYGRTKPV FCPG YTÎè WYCIú PC W [EKG OGVQF[ RTKPV C PKG RTKPVNP FCPG9[LUEKQYGHNWUJ W [EKG VGL OGVQF[ LGUV MQPKGEPG RQPKGYC PKG QUVC C Y[MQT[UVCPC OGVQFC RTKPVNP 8. Ustawienie nagłówka o nazwie Content-Length Nagłówek ten jest wymagany w przypadku danych przesyłanych przy u yciu metody 2156, nawet jeśli nie jest on u ywany w przypadku metody )'6. RQNCEGPKGUGV4GSWGUV2TQRGTV[ %QPVGPV.GPIVJ 5VTKPIXCNWG1H UVTWOKGP$KPCTP[UKG 9. Ustawienie nagłówka o nazwie Content-Type Przeglądarka Netscape u ywa domyślnie typu OWNVKRCTVHQTOFCVC, jednak przesyłanie regularnych danych formularza wymaga ustawienia nagłówka o wartości CRRNKECVKQPZYYYHQTO WTNGPEQFGF, który z kolei jest domyślny w przypadku przeglądarki Internet Explorer. Dlatego te , w celu umo liwienia przenoszenia programów, w przypadku wysyłania zwykłych danych formularza, wartość ta powinna zostać ustawiona w sposób jawny. W przypadku wysyłania danych zapisanych przy u yciu serializacji wartość ta nie jest istotna. RQNCEGPKGUGV4GSWGUV2TQRGTV[ %QPVGPV6[RG CRRNKECVKQPZYYYHQTOWTNGPEQFGF 10. Wysłanie rzeczywistych danych UVTWOKGP$KPCTP[YTKVG6Q RQNCEGPKGIGV1WVRWV5VTGCO 11. Utworzenie strumienia wejściowego W przypadku danych tekstowych (ASCII) oraz binarnych zazwyczaj wykorzystywany jest obiekt klasy $WHHGTGF4GCFGT, natomiast w przypadku danych serializowanych obiekt klasy 1DLGEV+PRWV5VTGCO. $WHHGTGF4GCFGT FCPG9GLUEKQYG PGY $WHHGTGF4GCFGT PGY +PRWV5VTGCO4GCFGT RQNCEGPKGIGV+PRWV5VTGCO 12. Odczytanie wyniku Szczegółowy opis wymaganych czynności zale y od rodzaju danych wysyłanych przez serwer. Poni ej przedstawiony został przykład wykonujący pewne nieokreślone bli ej czynności z ka dym wierszem danych przesyłanych przez serwer: 5VTKPI YKGTU YJKNG YKGTU FCPG9GLUEKQYGTGCF.KPG PWNN ] TQD%QU2T[7[EKW YKGTU _ 13. Pogratulowanie sobie Procedura obsługi danych przesyłanych przy u yciu metody 2156 jest długa i zawiła. Na szczęście, jest to dość standardowy proces. Oprócz tego mo na zawsze pobrać kod źródłowy umieszczony pod adresem ftp://ftp.helion.pl/ przyklady/serinp.zip i wykorzystać go w charakterze szablonu, od którego mo na rozpocząć tworzenie własnych programów. W kolejnym podrozdziale przedstawiony zostanie przykład apletu, wykonującego wszyst- kie opisane czynności.
  • 134. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 965 21.6. Aplet wysyłający dane przy u yciu metody POST Na listingu 21.8. przedstawiony został aplet wykorzystujący metodę opisaną w poprzednim podrozdziale. Aplet ten w celu wysłania danych przy u yciu metody POST pod wskazany adres URL wykorzystuje obiekt klasy 74.%QPPGEVKQP oraz $[VG#TTC[1WVRWV5VTGCO. U ywa on równie klasy o nazwie 'V[MKGVQYCPG2QNG6GMUVQYG, która umieszczona została w archi- wum znajdującym się pod adresem: ftp://ftp.helion.pl/przyklady/serinp.zip. Na rysunku 21.4. przedstawiony został wynik przesłania danych do serwletu o nazwie 2Q MC0CINQYMK, który jest niezwykle prosty i tworzy stronę WWW, zawierającą wszystkie pa- rametry przesłanego ądania. Szczegółowe informacje na ich temat umieszczone zostały w podrozdziale 19.6, „ ądanie klienta: Dostęp do danych formularza”. Listing 21.8. WyslijPost.java KORQTV LCXCCRRNGV#RRNGV KORQTV LCXCCYV
  • 135. KORQTV LCXCCYVGXGPV
  • 136. KORQTV LCXCPGV
  • 137. KORQTV LCXCKQ
  • 139. #RNGV QFE[VWLæE[ RCTCOGVT[ Q PCYCEJ HKTUV0COG NCUV0COG QTC
  • 140. GOCKN#FFTGUU C PCUVúRPKG Y[U[ CLæE[ LG FQ RTQITCOW WOKGUEQPGIQ
  • 141. PC YUMCCP[O UGTYGTG RQTEKG QTC CFTGUKG 74+ RT[ W [EKW OGVQF[ 2156
  • 142. 2
  • 143. -QF[ CEGTRPKúVG RQNUMKGL GF[ELK
  • 144. MUKæ MK 5GTYKU[ KPVGTPGVQYG 2TQITCOQYCPKG
  • 147. /CTV[ *CNN CPF .CTT[ $TQYP
  • 148. RWDNKE ENCUU 9[UNKL2QUV GZVGPFU #RRNGV KORNGOGPVU #EVKQP.KUVGPGT ] RTKXCVG 'V[MKGVQYCPG2QNG6GMUVQYG RQNG+OKGPKC RQNG0CYKUMC RQNG#FTGUW'OCKN RQNG0CY[5GTYGTC RQNG0WOGTW2QTVW RQNG#FTGUW74+ RTKXCVG $WVVQP RT[EKUM9[UNKL RTKXCVG 6GZV#TGC QDUCT9[PKMW 74. DKGCEC5VTQPC RWDNKE XQKF KPKV ] UGV$CEMITQWPF %QNQTYJKVG UGV.C[QWV PGY $QTFGT.C[QWV 2CPGN RCPGN9GLUEKQY[ PGY 2CPGN RCPGN9GLUEKQY[UGV.C[QWV PGY )TKF.C[QWV RCPGN9GLUEKQY[UGV(QPV PGY (QPV 5GTKH (QPV$1. RQNG+OKGPKC PGY 'V[MKGVQYCPG2QNG6GMUVQYG +OKG RCPGN9GLUEKQY[CFF RQNG+OKGPKC RQNG0CYKUMC
  • 149. 966 Część III n Programowanie aplikacji działających po stronie serwera Rysunek 21.4. Wynik działania apletu o nazwie WyslijPost, wysyłającego przy użyciu metody POST dane do serwletu PokazNaglowki PGY 'V[MKGVQYCPG2QNG6GMUVQYG 0CYKUMQ RCPGN9GLUEKQY[CFF RQNG0CYKUMC RQNG#FTGUW'OCKN PGY 'V[MKGVQYCPG2QNG6GMUVQYG #FTGU 'OCKN RCPGN9GLUEKQY[CFF RQNG#FTGUW'OCKN %CPXCU UGRCTCVQT PGY %CPXCU RCPGN9GLUEKQY[CFF UGRCTCVQT RQNG0CY[5GTYGTC PGY 'V[MKGVQYCPG2QNG6GMUVQYG 5GTYGT #RNGV[ YE[V[YCPG RQRTG UKGè OQIæ MQOWPKMQYCè UKú LGF[PKG UGTYGTGO MVÎTGIQ QUVC [ RQDTCPG RQNG0CY[5GTYGTCRQFCL2QNG6GMUVQYG UGV'FKVCDNG HCNUG DKGCEC5VTQPC IGV%QFG$CUG OGVQFC IGV*QUV YTCEC RWUV[ C EWEJ PCMQY[ Y RT[RCFMW CRNGVÎY YE[VCP[EJ F[UMW NQMCNPGIQ 5VTKPI UGTYGT DKGCEC5VTQPCIGV*QUV 5VTKPI MQOWPKMCV9[PKMQY[ 9 V[O OKGLUEW RQMCCP[ QUVCPKG MQOWPKMCV KH UGTYGTNGPIVJ ] MQOWPKMCV9[PKMQY[ $ CF 6GP CRNGV OWUK QUVCE YE[VCP[ P TGE[YKUVGIQ UGTYGTC 999 RT[ W [EKW RTQVQMQ W *662 P C PKG NQMCNPGIQ F[UMW C RQOQEæ QMTG NGPKC CFTGUW 74.P RQUVCEK HKNG /Q NKYG LGUV LGFPCM WTWEJQOKGPKG UGTYGTC 999P PC NQMCNP[O UGTYGTG UGV'PCDNGF HCNUG _
  • 150. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 967 RQNG0CY[5GTYGTCRQFCL2QNG6GMUVQYG UGV6GZV UGTYGT RCPGN9GLUEKQY[CFF RQNG0CY[5GTYGTC RQNG0WOGTW2QTVW PGY 'V[MKGVQYCPG2QNG6GMUVQYG 2QTV QPCEC RQTV FQO[UNP[ 5VTKPI RQTV5VTKPI 5VTKPIXCNWG1H DKGCEC5VTQPCIGV2QTV RQNG0WOGTW2QTVWRQFCL2QNG6GMUVQYG UGV6GZV RQTV5VTKPI RCPGN9GLUEKQY[CFF RQNG0WOGTW2QTVW RQNG#FTGUW74+ PGY 'V[MKGVQYCPG2QNG6GMUVQYG 74+ 5VTKPI FQO[UNP[#FTGU74+ UGTXNGVEYR5JQY2CTCOGVGTU RQNG#FTGUW74+RQFCL2QNG6GMUVQYG UGV6GZV FQO[UNP[#FTGU74+ RCPGN9GLUEKQY[CFF RQNG#FTGUW74+ %CPXCU UGRCTCVQT PGY %CPXCU RCPGN9GLUEKQY[CFF UGRCTCVQT RT[EKUM9[UNKL PGY $WVVQP 9[UNL FCPG RT[EKUM9[UNKLCFF#EVKQP.KUVGPGT VJKU 2CPGN DWVVQP2CPGN PGY 2CPGN DWVVQP2CPGNCFF RT[EKUM9[UNKL RCPGN9GLUEKQY[CFF DWVVQP2CPGN CFF RCPGN9GLUEKQY[ $QTFGT.C[QWV0146* QDUCT9[PKMW PGY 6GZV#TGC QDUCT9[PKMWUGV(QPV PGY (QPV /QPQURCEGF (QPV2.#+0 QDUCT9[PKMWUGV6GZV MQOWPKMCV9[PKMQY[ CFF QDUCT9[PKMW $QTFGT.C[QWV%'06'4 _ RWDNKE XQKF CEVKQP2GTHQTOGF #EVKQP'XGPV GXGPV ] VT[ ] 5VTKPI RTQVQMQN DKGCEC5VTQPCIGV2TQVQEQN 5VTKPI UGTYGT RQNG0CY[5GTYGTCRQFCL2QNG6GMUVQYG IGV6GZV 5VTKPI EKCI2QTVW RQNG0WOGTW2QTVWRQFCL2QNG6GMUVQYG IGV6GZV KPV RQTV VT[ ] RQTV +PVGIGTRCTUG+PV EKCI2QTVW _ ECVEJ 0WODGT(QTOCV'ZEGRVKQP PHG ] RQTV FQO[ NP[ RQTV Q PWOGTG _ 5VTKPI WTK RQNG#FTGUW74+RQFCL2QNG6GMUVQYG IGV6GZV 74. FCPG74. PGY 74. RTQVQMQN UGTYGT RQTV WTK 74.%QPPGEVKQP RQNCEGPKG FCPG74.QRGP%QPPGEVKQP 0CNG [ UKú WRGYPKè G RTGINæFCTMC PKG WOKGUEC CFTGUW 74. Y DWHQTG RCOKúEK RQFTúEPGL RQNCEGPKGUGV7UG%CEJGU HCNUG 0CNG [ PCMCCè RTGINæFCTEG WOQ NKYKGPKG Y[U[ CPKC FCP[EJ FQ UGTYGTC RQNCEGPKGUGVQ1WVRWV VTWG $[VG#TTC[1WVRWV5VTGCO UVTWOKGP$KPCTP[ PGY $[VG#TTC[1WVRWV5VTGCO 4QUGT DWHQT Y TCKG RQVTGD[ 5VTWOKG CRKUWLæE[ FQ DWHQTC 2TKPV9TKVGT QWV PGY 2TKPV9TKVGT UVTWOKGP$KPCTP[ VTWG 5VTKPI FCPG2QUV HKTUV0COG YCTVQUECMQFQYCPC RQNG+OKGPKC NCUV0COG YCTVQUECMQFQYCPC RQNG0CYKUMC GOCKN#FFTGUU YCTVQUECMQFQYCPC RQNG#FTGUW'OCKN
  • 151. 968 Część III n Programowanie aplikacji działających po stronie serwera CRKU FCPG RTGU[ CPG C RQOQEæ OGVQF[ 2156 FQ NQMCNPGIQ DWHQTC FCP[EJ QWVRTKPV FCPG2QUV QWVHNWUJ 1RTQPKL DWHQT LCYPKG RQPKGYC Y[MQT[UVCPC QUVCNC OGVQFC RTKPV C PKG RTKPVNP æFCPKC 2156 Y[OCICLæ QMTG NGPKC PCI ÎYMC %QPVGPV.GPIVJ 5VTKPI EKCINWIQUEK 5VTKPIXCNWG1H UVTWOKGP$KPCTP[UKG RQNCEGPKGUGV4GSWGUV2TQRGTV[ %QPVGPV.GPIVJ EKCINWIQUEK 2TGINæFCTMC 0GVUECRG WUVCYKC CWVQOCV[EPKG PCI ÎYGM %QPVGPV6[RG K PCFCLG OW YCTVQ è OWNVKRCTVHQTOFCVC ,G NK YKúE RTGU[ CPG Uæ Y[M G FCPG HQTOWNCTC OWUKU OKGPKè LGIQ YCTVQ è PC CRRNKECVKQPZYYYHQTOWTNGPEQFGF EQ MQNGK UVCPQYK YCTVQ è FQO[ NPæ WUVCYKCPæ RTG RTGINæFCTMú +PVGTPGV 'ZRNQTGT ,G NK RTGU[ C UKú FCPG 2156 CRKUCPG RT[ W [EKW UVTWOKGPKC 1DLGEV1WVRWV5VTGCO YCTVQ è PCI ÎYMC %QPVGPV6[RG PKG LGUV DTCPC RQF WYCIú FNCVGIQ VG OQ PC IQ RQOKPæè RQNCEGPKGUGV4GSWGUV2TQRGTV[ %QPVGPV6[RG CRRNKECVKQPZYYYHQTOWTNGPEQFGF 0CNG [ CRKUCè FCPG 2156 FQ TGE[YKUVGIQ UVTWOKGPKC Y[L EKQYGIQ UVTWOKGP$KPCTP[YTKVG6Q RQNCEGPKGIGV1WVRWV5VTGCO $WHHGTGF4GCFGT KP PGY $WHHGTGF4GCFGT PGY +PRWV5VTGCO4GCFGT RQNCEGPKGIGV+PRWV5VTGCO 5VTKPI YKGTU 5VTKPI PCM-QPEC9KGTUC P QDUCT9[PKMWUGV6GZV YJKNG YKGTU KPTGCF.KPG PWNN ] QDUCT9[PKMWCRRGPF YKGTU QDUCT9[PKMWCRRGPF PCM-QPEC9KGTUC _ _ ECVEJ +1'ZEGRVKQP KQG ] 0CNG [ CRKUCè KPHQTOCELG VGUVQYG PC MQPUQNK ,CX[ 5[UVGOQWVRTKPVNP +1'ZEGRVKQP KQG _ _ 1DKGMV MNCU[ .CDGNGF6GZV(KGNF LGUV Y TGE[YKUVQUEK QDKGMVGO MNCU[ 2CPGN WOKGUEQP[O PC QDKGMVCOK MNCU[ .CDGN QTC 6GZV(KGNF 2QPK UC OGVQFC RQDKGTC YCTVQ è WOKGUEQPæ Y RQNW VGMUVQY[O PCUVúRPKG MQFWLG Læ RT[ W [EKW OGVQF[ 74.GPEQFGF K YTCEC W[UMCP[ Y[PKM RTKXCVG 5VTKPI YCTVQUECMQFQYCPC 'V[MKGVQYCPG2QNG6GMUVQYG RQNG ] 5VTKPI YCTVQUE1T[IKPCNPC RQNGRQFCL2QNG6GMUVQYG IGV6GZV TGVWTP 74.'PEQFGTGPEQFG YCTVQUE1T[IKPCNPC _ _
  • 152. Rozdział 21. n Wykorzystywanie apletów w charakterze interfejsu... 969 21.7. Pomijanie serwera HTTP podczas komunikacji z programem po stronie serwera Chocia aplety mogą utworzyć połączenia sieciowe jedynie z tym samym komputerem, z którego zostały wczytane, nie muszą u ywać w tym celu koniecznie tego samego portu (na przykład portu 80 w przypadku połączeń HTTP). W celu komunikacji z ró nymi klien- tami działającymi na tym samym serwerze mogą one u ywać zwykłych gniazd, JDBC oraz RMI. Wykonanie tych czynności w apletach przebiega dokładnie tak samo, jak w przypadku zwykłych programów utworzonych w języku Java, dlatego te mo na u yć metod wykorzy- stania gniazd, JDBC oraz RMI, które są ju znane, pod warunkiem, e u ywa się tego samego serwera sieciowego, z którego pobrany został aplet. 21.8. Podsumowanie Formularze HTML stanowią najprostszy oraz najpowszechniej stosowany interfejs u ytkow- nika programów działających po stronie serwera. Tym niemniej, aplety dostarczają bogat- szego zestawu elementów interfejsu u ytkownika, umo liwiają utworzenie ekranów z ciągle odświe aną zawartością oraz upraszczają zdecydowanie przesyłanie du ych zło onych struktur danych. Generalną zasadą jest u ywanie formularzy wszędzie tam, gdzie jest to tylko mo liwe. Jednak wygodnie jest dysponować mo liwością u ycia apletów w przypadku, gdy formularze HTML stają się zbyt ograniczone.