Java Servlet Programowanie.pdf

(6872 KB) Pobierz
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