Java Servlet - programowanie.pdf

(6679 KB) Pobierz
O Autorach-05
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.
Komentarz [PG1]: Do
Redaktora: w tym rozdziale
przewijają się ksiąŜki, których nie
wydaliśmy, moŜe by tak wpisać
nasze?
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.
274460771.001.png 274460771.002.png
· 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
Komentarz [PG2]: do Red
prow: tej ksiąŜki nie wydaliśmy,
moŜe tak przeredagować tekst?
·
·
274460771.003.png 274460771.004.png
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