Java Servlet Programowanie.pdf

(9870 KB) Pobierz
ABC Jezyka HTML
O Autorach
Jason Hunter jest starszym technologiem w firmie CollabNet ( http://collab.net ), firmie dostarczającej narzędzia i
usługi dla współpracy Open Source. Oprócz bycia autorem książki „Java Servlet — programowanie” jest także
redaktorem witryny Servlets.com , twórcą biblioteki com.oreilly.servlet , współpracownikiem projektu Apache
Jakarta, który tworzy serwer Tomcat (od czasów, kiedy projekt był jeszcze wewnętrzną częścią firmy Sun),
członkiem grupy ekspertów odpowiedzialnej za tworzenie API Servlet/JSP i JAXP oraz jest członkiem Komitetu
Wykonawczego JCP nadzorującego platformę Javy, jako reprezentant Apache Software Foundation. Pisze
również artykuły dla JavaWorld oraz przemawia na wielu konferencjach programistycznych i Open Source. W
ostatnich czasach współtworzył bibliotekę Open Source JDOM ( http://jdom.org ), pozwalającą na optymalizację
integracji Javy i XML oraz przewodzi grupie ekspertów odpowiedzialnej za tworzenie JDOM.
Jason poprzednio pełnił funkcję głównego technologa w firmie K&A Software, specjalizującej się w treningach i
konsultacjach związanych z Javą i działał jako wynajęty ekspert dla wielu przedsiębiorstw włączając w to Sun
Microsystems. Jeszcze wcześniej pracował w Silicon Graphics, gdzie był odpowiedzialny za tworzenie (i
niszczenie) różnego rodzaju technologii WWW.
Jason ukończył z najwyższym wyróżnieniem kierunek nauki komputerowe w Willamette University (Salem,
Oregon) w 1995. Rozpoczął programowanie w Javie w lecie 1995, a z serwletami i innymi technologiami
programowania po stronie serwera jest związany od grudnia 1996. Jeżeli jakimś cudem nie pracuje,
przypuszczalnie można go znaleźć na górskiej wędrówce.
William „Will” Crawford związał się z tworzeniem stron WWW w 1995. Pracował przy programie
informatycznym szpitala Children's Hospital w Bostonie, gdzie pomagał przy tworzeniu pierwszego
elektronicznego systemu zapisów medycznych opartego na sieci WWW i był związany z jednymi z pierwszych
korporacyjnych zastosowań języka Java. Był konsultantem projektów sieci Intranet w między innymi Children's
Hospital w Massachusetts, General Hospital w Brigham, Women's Hospital, Boston Anesthesia Education
Foundation i Harvard Medical Center.
Will obecnie przewodzi zespołowi projektanckiemu w firmie Invantage, Inc. w Cambridge, Massachusetts, która
tworzy oparte na Javie narzędzia intranetowe dla przemysłu farmaceutycznego. W wolnym czasie jest
zapalonym amatorem fotografii, pisarzem i studentem ekonomii na Yale University.
Kolofon
Wygląd naszych książek jest wynikiem komentarzy czytelników, naszych własnych eksperymentów oraz
komentarzy od dystrybutorów. Wyróżniające się okładki dopełniają nasze wyróżniające się podejście do
tematów technicznych, tchnące osobowość i życie w potencjalnie suche tematy.
Obrazek na okładce książki „Java Servlet — programowanie. Wydanie drugie.” przedstawia miedziany imbryk.
Collen Gorman była redaktorem produkcji, a Norma Emory edytorem kopii dla „Java Servlet —
programowanie. Wydanie drugie.” Catherine Moris i Leanne Soylemez były odpowiedzialne za kontrolę jakości.
Firma Frameworks Consulting dostarczyła obsługi produkcji. Ellen Troutman-Zaig napisała indeks.
Hanna Dyer zaprojektowała okładkę niniejszej książki w oparciu o projekt serii autorstwa Ediego Freedmana.
Obrazek został sfotografowany przez Kevina Thomasa i dostosowany przy pomocy Adobe Photoshop przez
Michaela Snowa. Emma Colby utworzyła pozostałą część okładki w programie QuarkXPress 4.1 przy pomocy
czcionki Bodoni Black firmy URW Software i Bodoni Bold Italic firmy Bitstream.
David Futato zaprojektował wnętrze książki w oparciu o projekt serii autorstwa Nancy Priest. Judy Hoer
dokonała konwersji plików Microsoft Word na FrameMaker 5.5.6, przy pomocy narzędzi utworzonych przez
Mike'a Sierra. Czcionka nagłówków to Bodoni BT, czcionka tekstu to New Baskerville, a czcionka kodu to
Constant Willison. Rysunki pojawiające się w książce zostały utworzone przez Roberta Romano przy pomocy
Macromedia FreeHand 8 i Adobe Photoshop 5.
Wstęp
Od czasu, kiedy napisane zostało pierwsze wydanie niniejszej książki, serwlety i platforma Javy działająca po
stronie serwera zyskała popularność, której nie można było spodziewać się w najśmielszych marzeniach.
Postępuje przyłączanie tych mechanizmów do istniejących. Producenci serwerów WWW oferują obecnie
obsługę serwletów jako standardową własność swojego oprogramowania. W specyfikacji Java 2, Enterprise
Edition (J2EE) serwlety istnieją jako podstawowy składnik, a niemożliwym jest obecnie znalezienie producenta
serwerów aplikacji, którego produkt nie zawierałby skalowalnej implementacji serwletów. Jest to jednak więcej
niż zjawisko napędzane przez producentów. Serwlety stały się podstawą dla JavaServer Pages (JSP) i innych
szkieletów tworzenia stron WWW, a technologia serwletów obsługuje aktualnie tak często odwiedzane witryny,
jak ESPN.com i AltaVista.com.
W związku z tym nie jest zaskakującym fakt, że krajobraz serwletów wygląda nieco inaczej niż w czasach
pierwszego wydania. Interfejs serwletów (Servlet API) został poddany dwóm przeglądom, a trzeci jest w trakcie
przygotowań. Znajome z początków istnienia serwletów firmy Live Software i New Atlanta, które niegdyś
zarabiały sprzedając mechanizmy serwletów (nazywane teraz kontenerami serwletów ) Jrun i ServletExec,
zostały zauważone i wykupione przez większe firmy zorientowane na WWW, odpowiednio przez Allaire i
Unify. Oferują one teraz wiele własności wykraczających poza podstawową obsługę serwletów w celu
odróżnienia się od innych.
Co dziwne, oficjalne pakiety javax.servlet i javax.servlet.http były pierwszymi klasami Javy,
które zostały oficjalnie rozprowadzone jako Open Source. Zostały one przeniesione do projektu Apache
Software Foundation (ASF), i można je aktualnie odnaleźć pod adresem http://jakarta.apache.org . Pakiety te
dalej zgodne są ze specyfikacją Servlet API, jednak poprawa błędów i uaktualnianie specyfikacji znajduje się
teraz w rękach w zaufanych programistów Open Source — włączając autora, który miał niedawno okazję
poprawienia obsługi warunkowego żądania GET w HttpServlet . Dodatkowo, serwer, który jest traktowany
jako wzorcowa implementacja Servlet API, został również przeniesiony do ASF i udostępniony jako Open
Source pod nazwą Apache Tomcat. Od tego czasu Tomcat stał się jednym z najpopularniejszych kontenerów
serwletów. Większa ilość informacji na ten temat dostępna jest pod adresem http://opensource.org .
Świat serwletów zmienił się, a niniejsza książka zawiera uaktualnione informacje. Całą wiedzę potrzebną do
programowania serwletów Javy, od początku do końca. Pierwsze pięć rozdziałów opisuje podstawy — czym są
serwlety, jakie działania wykonują oraz w jaki sposób pracują. Następne 15 rozdziałów zawiera informacje
zaawansowane — opisuje działania podejmowane najczęściej przy pomocy serwletów oraz najpopularniejsze
narzędzia do tego służące. Można tam znaleźć wiele przykładów, kilka wskazówek i ostrzeżeń, a nawet opisy
kilku prawdziwych błędów, które umknęły uwagi korektorów technicznych.
Servlet API 2.2
Niniejsze wydanie książki opisuje wersję 2.2 Servlet API, która osiągnęła stan „wersji publicznej” w sierpniu
1999, a stan „wersji ostatecznej” w grudniu 1999. Wydanie pierwsze opisywało wersje 2.0. Zmiany pomiędzy
wersjami 2.0 i 2.2 są znaczne:
Zostały wprowadzone zasady definiujące dystrybucje serwletów pomiędzy kilkoma serwerami
wspierającymi.
Serwlety korzystają aktualnie z dołączanych aplikacji WWW, które mogą być konfigurowane i
wdrażane w sposób niezależny od serwera.
Znacznie poprawione zostało bezpieczeństwo serwletów.
Serwlety mogą teraz przekazywać obsługę żądań innym składnikom serwera.
Serwlety mogą teraz dzielić się informacjami przy pomocy ich ServletContext
Istnieje sposób przystosowania serwletów do obsługi dostępu rozproszonego.
Serwlety posiadają teraz ściślejszą kontrolę nad zarządzaniem sesją.
Dodane zostało buforowanie odpowiedzi.
Rozszerzona została kontrola nad nagłówkami HTTP.
Aktualnie może być zastosowana bardziej zaawansowana obsługa błędów.
API został „wyczyszczony” w celu nadania większej spójności i przewidywalności nazwom metod.
Servlet API jest teraz zdefiniowany poprzez formalny dokument specyfikacji, a przyszłe uaktualnienia
API są zarządzane przez formalny proces Java Specification Request (JSR).
Serwlety są teraz zintegrowane z podstawową specyfikacją platformy Java 2, Enterpise Edition (J2EE).
Wszystkie te zmiany, oraz wiele innych drobnych usprawnień, są w pełni opisane w niniejszym nowym
wydaniu. Drugie wydanie zawiera również obszerny opis najciekawszego obszaru programowania serwletów —
technik tworzenia prawdziwych dynamicznych witryn opartych na serwletach. W niniejszym wydaniu znajdują
się samouczki pięciu najpopularniejszych technologii tworzenia zawartości opartej na serwletach, należących do
Open Source:
JavaServer Pages (JSP), standard firmy Sun, tworzony i udostępniany w połączeniu z serwletami
Tea, technologia utworzona przez Walt Disney Internet Group (dawniej GO.com), zastosowany w
wielu bardzo często odwiedzanych stronach, takich jak ESPN.com , NFL.com , Disney.com ,
DisneyLand.com , GO.com i Movies.com
WebMacro, utworzony przez Semiotek i wykorzystywany przez wyszukiwarkę AltaVista
XMLC, utworzony przez Lutris Technologies w celu udostępnienia mocy technologii XML sieci
WWW, wykorzystywany przez innowacyjne witryny takie jak customatix.com
Element Construcion Set (ECS), utworzony przez Apache w celu obsługi najbardziej wymagających
potrzeb programistycznych
Niniejsze drugie wydanie opisuje również WAP, Wireless Application Protocol (Protokół Aplikacji
Bezprzewodowych) oraz wyjaśnia, jak tworzyć oparte na serwletach aplikacje WWW dla urządzeń
bezprzewodowych.
Servlet API 2.3
W czasie pisania niniejszej książki, Servlet API 2.3 jest w trakcie tworzenia. Jednak nie został on jeszcze
ukończony. W związku z tym tekst niniejszego wydania zawiera w różnych miejscach krótkie uwagi na temat
zmian spodziewanych w z Servlet API 2.3. Dodatkowo, ostatni rozdział książki zawiera dokładniejszy opis
próbnej specyfikacji Servlet API 2.3, udostępnionej w październiku 2000, który pozwala na zapoznanie się z
najnowszymi własnościami Servlet API 2.3. Należy jednak zaznaczyć, że specyfikacje te ciągle podlegają
zmianom, a ostateczna wersja może się nieco różnić od materiału tu przedstawionego.
Czytelnicy pierwszego wydania
Czytelnicy książki „ Java Servlet Programming, 1st ed. ” zorientują się, że niniejsza książka została obszernie
uaktualniona do Servlet API 2.2 i, gdzie to tylko możliwe, Servlet 2.3. Każdy rozdział został znacząco
poprawiony w porównaniu z pierwszym wydaniem, a także dodano sześć nowych rozdziałów opisujących
techniki tworzenia zawartości opartej na serwletach, jak również nowy rozdział siódmy, „Serwlety korporacyjne
i J2EE”, który opisuje integrację serwletów w platformie J2EE.
Ze względu na znaczący wpływ modelu aplikacji WWW na wszystkie aspekty programowania serwletów,
poleca się czytelnikom pierwszego wydania przeczytanie każdego interesującego ich rozdziału oraz zwrócenie
uwagi na nowe mechanizmy, które pozwalają na wykonanie tradycyjnych zadań. Czytelnicy dysponujący
ograniczonym czasem powinni przejrzeć listę najbardziej znaczących zmian w podrozdziale „Organizacja”.
Czytelnicy
Dla kogo jest ta książka? Dla osób zainteresowanych tworzeniem aplikacji umieszczanych w sieci WWW.
Dokładniej rzecz biorąc, niniejszą książką powinni zainteresować się:
Programiści J2EE — serwlety są integralną częścią standardu Java 2, Enterpise Edition. Programiści
tworzący aplikacje dla serwerów J2EE mogą nauczyć się jak najlepiej zintegrować serwlety z innymi
podobnymi technologiami.
Programiści JSP — JavaServer Pages (JSP) tworzone są na podstawie serwletów. Wykorzystanie pełnej
mocy JSP wymaga zrozumienia serwletów, co też umożliwia niniejsza książka. Zawiera ona również
samouczek JSP oraz czterech podstawowych konkurencyjnych technologii.
Programiści apletów Javy — porozumiewanie się apletów z serwerem zawsze sprawiało problemy.
Serwlety ułatwiają to zadanie poprzez dostarczenie apletom prostego w połączeniu agenta na serwerze.
Programiści CGI — CGI jest popularną metodą rozszerzania funkcjonalności serwera WWW. Serwlety
są elegancką i wydajną alternatywą tej techniki.
Programiści innych technik serwerów — istnieje wiele alternatyw dla CGI, między innymi FastCGI,
PHP, NSAPI, WAI, ISPAI, ASP, a teraz ASP+. Każda z nich posiada ograniczenia związane z
przenośnością, bezpieczeństwem, wydajnością i/lub integracją z innymi źródłami danych. Serwlety
przewyższają je w każdym z tych obszarów.
Co należy wiedzieć
Podczas rozpoczynania pracy z niniejszą książką, niespodzianką dla autorów okazało się, że jedną z
najtrudniejszych do określenia rzeczy jest docelowy czytelnik. Czy zna on Javę? Czy ma doświadczenie w
programowaniu CGI lub innych aplikacji WWW? Czy miał już kontakt z serwletami? Czy zna HTTP i HTML,
czy te skróty brzmią dla niego zupełnie niezrozumiale? Niezależnie od przyjmowanego poziomu doświadczenia,
zawsze okazywało się, że książka będzie zbyt uproszczona dla jednych użytkowników, a zbyt zaawansowana dla
drugich.
Ostatecznie zdecydowano się na zasadę, że niniejsza książka powinna zawierać w przeważającej części materiał
oryginalny — można pominąć obszerne opisy tematów i koncepcji dobrze opisanych w sieci lub innych
książkach. W tekście znaleźć można odwołania do tych zewnętrznych źródeł informacji.
Oczywiście zewnętrzne źródła informacji nie są wystarczające. Niniejsza książka zakłada, że czytelnicy dobrze
znają język Java oraz podstawowe techniki programowania obiektowego. Jeżeli nie spełnia się tych założeń,
polecane jest przygotowanie się poprzez przeczytanie ogólnej książki na temat programowania w Javie, takiej
jak „ Learning Java ” autorstwa Patricka Niemeyera i Jonathana Knudsena (O'Reilly). W książce tej można
jedynie krótko zapoznać się z rozdziałami na temat apletów i programowania Swing (graficznego), a skupić się
na sieci i programowaniu wielowątkowym. Aby zacząć od razu naukę serwletów i uczyć się Javy w trakcie,
polecane jest przeczytanie niniejszej książki równocześnie z „ Java in a Nutshell ” autorstwa Davida Flanagana
(O'Reilly) lub innym podręcznikiem.
Niniejsza książka nie wymaga od czytelników doświadczenia w programowaniu WWW, HTTP i HTML. Nie
zawiera jednak pełnego wprowadzenia lub wyczerpującego opisu tych technologii. Opisane zostaną podstawy
potrzebne do efektywnego programowania serwletów, a szczegóły (takie jak pełna lista znaczników HTML i
nagłówków HTTP 1.1) pozostawione zostaną innym źródłom.
Przykłady
W niniejszej książce znaleźć można ponad 100 przykładów serwletów. Ich kod jest całkowicie zawarty
wewnątrz tekstu, możliwe jest jednak także pobranie przykładów zamiast ręcznego ich wpisywania. Kod
przykładów, spakowany i gotowy do pobrania, można znaleźć pod adresem
Zgłoś jeśli naruszono regulamin