Bryan Basham, Kathy Sierra, Bert Bates head first servlets & jsp. edycja polska ebook.pdf

(122128 KB) Pobierz
887614968.079.png
1 Do czego służą serwlety i strony JSP?
Aplikacje internetowe s¹ super. Ile znasz normalnych aplikacji o graficznym
interfejsie u¿ytkownika, których u¿ywaj¹ miliony osób na ca³ym świecie?
Jako programista aplikacji internetowych mo¿esz uwolniæ siê od problemów
z wdra¿aniem, jakie wystêpuj¹ w przypadku tworzenia wszystkich standardowych
aplikacji, i udostêpniaæ swoje aplikacje wszystkim, którzy posiadaj¹ przegl¹darki
WWW. Jednak do tego bêdziesz potrzebowaæ serwletów i stron JSP. Bêdziesz ich
potrzebowaæ, poniewa¿ zwyk³e, statyczne strony HTML by³y dobre… w latach 90.
Zatem dowiedz siê, jak zmieniæ witrynê WWW w aplikacjê internetow¹ .
Cele egzaminu
30
Czym zajmuje się serwer WWW i klient oraz w jaki sposób
porozumiewają się ze sobą
34
Dwuminutowy kurs języka HTML
35
Czym jest protokół HTTP?
38
Żądanie HTTP
Anatomia żądań GET i POST oraz odpowiedzi protokołu HTTP
43
Przeglądarka
internetowa
Lokalizacja stron WWW przy użyciu adresów URL
48
Serwery WWW, strony statyczne i CGI
52
Odpowiedź HTTP
Serwlety bez tajemnic: pisanie, wdrażanie i uruchamianie serwletów
58
Serwer
Klient
Kluczow e elemen ty strum ienia
odpowi edzi :
Technologia JSP jest efektem wprowadzenia języka Java do kodu HTML
62
kod stan u (okreś lający,
czy dan e żądan ie zostało
pomyś lnie prze tworzon e),
Przeglądarka
internetowa
ty p zawar tości (tek st, obraz ,
H TML itp . ) ,
zawa rtość (rz eczywist y kod
HTM L, obra z itp.).
Klient
2 Architektura aplikacji internetowej
Serwlety potrzebuj¹ pomocy. Kiedy jest odbierane ¿¹danie, ktoś musi utworzyæ
egzemplarz serwletu albo przynajmniej utworzyæ w¹tek, który bêdzie umia³
obs³u¿yæ ¿¹danie. Ktoś musi wywo³aæ metodê doPost() lub doGet() serwletu.
Ktoś musi przekazaæ ¿¹danie do serwletu oraz odebraæ to, co serwlet wygeneruje
w odpowiedzi. Ktoś musi zarz¹dzaæ ¿yciem, śmierci¹ oraz zasobami u¿ywanymi
przez serwlet. W tym rozdziale bêdziemy pisaæ o kontenerze i po raz pierwszy
przyjrzymy siê wzorcowi MVC.
Serwlet
Kontroler
Cele egzaminu
66
Czym jest kontener oraz co nam daje?
67
Jak to wszystko wygląda w kodzie (co sprawia, że serwlet jest serwletem)?
72
Określanie nazw serwletów i kojarzenie ich z adresami URL
w deskryptorze wdrożenia
class Foo {
void bar()
{
doBar();
}
}
74
Opowiadanie: Bob buduje witrynę swatającą (wprowadzenie do wzorca MVC)
78
Ogólne informacje i przykład wzorca model-widok-kontroler (MVC)
82
WIDOK
Model
„Działający” deskryptor wdrożenia (DD)
92
BD
Jaka w tym wszystkim jest rola platformy J2EE?
93
6
887614968.090.png 887614968.101.png 887614968.112.png 887614968.001.png 887614968.011.png 887614968.022.png 887614968.032.png 887614968.033.png 887614968.034.png 887614968.035.png 887614968.036.png 887614968.037.png 887614968.038.png
3 Minipodręcznik MVC
Tworzenie i wdra¿anie aplikacji internetowych MVC. Nadszed³ czas, aby utrudziæ
nasze d³onie pisaniem formularzy HTML, kontrolerów serwletów, modeli (zwyk³ych,
tradycyjnych klas Javy), deskryptora rozmieszczenia w formacie XML oraz widoku
opartego na stronach JSP. Najwy¿sza pora zbudowaæ, wdro¿yæ i przetestowaæ
tak¹ aplikacjê. Najpierw jednak musimy przygotowaæ odpowiednie środowisko
wytwarzania aplikacji. Nastêpnie musimy przygotowaæ środowisko wdra¿ania ,
postêpuj¹c przy tym zgodnie ze specyfikacj¹ serwletów i JSP oraz wymaganiami
Tomcata. Owszem… tworzymy ma³¹ aplikacjê, jednak niemal ¿adna aplikacja nie
jest na tyle ma³a, by nie mo¿na w niej by³o wykorzystaæ wzorca MVC.
tomcat
tomcat
Katalogi specyficzne dla Tomcata
webapps
Cele egzaminu
96
Piwo-w1
Zbudujmy aplikację internetową MVC — pierwszy projekt
97
Tworzenie środowisk wytwarzania i wdrażania aplikacji
100
Część specyfikacji
serwletów
WEB-INF
<html>
<body>
...
</body>
</html>
form.html
<%
...
%>
wynik.jsp
Tworzenie i testowanie kodu HTML początkowej strony formularza
103
Tworzenie deskryptora wdrożenia (DD)
105
classes
lib
<webapp>
.
.
</webapp>
Tworzenie, kompilacja, wdrażanie i testowanie serwletu kontrolera
108
web.xml
Projektowanie, tworzenie i testowanie komponentu modelu
110
com
Rozszerzenie kontrolera o wywołania modelu
111
Twoja
aplikacja
Tworzenie i wdrożenie komponentów widoku (to jest JSP)
115
example
Rozszerzenie serwletu o wywołanie strony JSP
116
web
model
4 Być serwletem
0010 0001
1100 1001
0001 0011
0101 0110
0010 0001
1100 1001
0001 0011
0101 0110
Serwlety ¿yj¹, by obs³ugiwaæ klientów. Zadaniem serwletu jest obs³uga
¿¹dañ klientów i odsy³anie do klienta w³aściwych odpowiedzi . Ż¹danie mo¿e
byæ zupe³nie proste, np. prześlij mi stronê powitaln¹ , lub znacznie bardziej
skomplikowane, np. wygeneruj zamówienie na podstawie zawartości mojego
koszyka . Ż¹danie obejmuje dane kluczowe, a kod Twojego serwletu musi
wiedzieæ, jak nale¿y te dane odszukaæ i jak mo¿na ich u¿yæ . Co wiêcej, kod
serwletu musi wiedzieæ, jak odes³aæ odpowiedź . A jeśli nie
Idempotencja to
nic wstydliwego…
Cele egzaminu
122
Życie serwletu w kontenerze
123
Inicjalizacja i wątki serwletu
129
RZECZYWISTYM celem serwletu jest obsługa żądań GET i POST
133
Historia pewnego niepowtarzalnego żądania
140
Co sprawia, że przeglądarka wysyła żądanie GET albo żądanie POST ?
145
Wysyłanie i stosowanie parametrów
147
Serwlet wykorzystuje dane
dołączone do żądania POST do
zaktualizowania bazy danych.
Dobrze, wiemy już, do czego służy klasa Request
przyjrzyjmy się teraz klasie Response
NIEpowtarzalne
154
GET
...
...
Możesz ustawiać nagłówki odpowiedzi, możesz dodawać nagłówki odpowiedzi
161
BD
Serwlet
Przekierowania a przydzielanie żądania
164
Serwer odsyła odpowiedź
z wygenerowanym kodem strony HTML.
Klient
Przypomnienie: HttpServletResponse
168
7
887614968.039.png 887614968.040.png 887614968.041.png 887614968.042.png 887614968.043.png 887614968.044.png 887614968.045.png 887614968.046.png 887614968.047.png 887614968.048.png 887614968.049.png 887614968.050.png 887614968.051.png 887614968.052.png 887614968.053.png 887614968.054.png 887614968.055.png 887614968.056.png 887614968.057.png 887614968.058.png 887614968.059.png 887614968.060.png 887614968.061.png 887614968.062.png 887614968.063.png 887614968.064.png 887614968.065.png 887614968.066.png 887614968.067.png 887614968.068.png 887614968.069.png 887614968.070.png 887614968.071.png 887614968.072.png 887614968.073.png 887614968.074.png 887614968.075.png 887614968.076.png 887614968.077.png 887614968.078.png 887614968.080.png 887614968.081.png 887614968.082.png 887614968.083.png 887614968.084.png 887614968.085.png 887614968.086.png 887614968.087.png 887614968.088.png 887614968.089.png 887614968.091.png 887614968.092.png 887614968.093.png 887614968.094.png 887614968.095.png 887614968.096.png 887614968.097.png 887614968.098.png 887614968.099.png 887614968.100.png
5 Być aplikacją internetową
Żaden serwlet nie dzia³a samodzielnie. We wspó³czesnych aplikacjach
internetowych osi¹ganie zamierzonego celu jest mo¿liwe dziêki wspó³pracy wielu
komponentów. Stosowane s¹ komponenty modelu, widoku oraz kontrolera.
Wykorzystuje siê tak¿e ró¿ne klasy pomocnicze. Jednak w jaki sposób wszystkie
te elementy wspólnie tworz¹ jedn¹ aplikacjê internetow¹? W jaki sposób
komponenty mog¹ wspólnie korzystaæ z pewnych informacji? Jak ukrywaæ pewne
informacje? Jak zapewniæ bezpieczeñstwo informacji podczas wykonywania
w¹tków? Od odpowiedzi na te pytania mo¿e zale¿eæ Twoja praca.
Cele egzaminu
176
Atrybuty kontekstu
serwlet
Wybawieniem są parametry inicjalizacji oraz obiekt ServletConfig
178
ustawia
„Adres poczty
administratora
foo@wickedlysmart.com
Jak strona JSP może uzyskać dostęp do parametrów inicjalizacji serwletu?
183
BD
„Użytkownicy
pracujący
równocześnie”
42
serwlet
Połączenie
z bazą danych
Wybawieniem są parametry inicjalizacji kontekstu
185
Porównanie obiektów Servlet Config oraz Servlet Context
187
<html>
<body>
<jsp:setProperty
name=”foo”
property=”bar”>
</body>
</html>
Chcemy obiektu ServletContextListener
192
serwlet
Dostęp do tych atrybutów ma każdy składnik aplikacji.
JSP
Przewodnik: prosty obiekt ServletContextListener
196
Kompilacja, wdrażanie i testowanie obiektu nasłuchującego
204
Atrybuty sesji
Cała historia — obiekt nasłuchujący kontekstu
206
<html>
<body>
<jsp:setProperty
name=”foo”
property=”bar”>
</body>
</html>
ustawia
serwlet
Serwlet A
Osiem interfejsów obiektów nasłuchujących
— nie tylko zdarzenia kontekstu
Widok JSP
208
serwlet
Serwlet B
Czym dokładnie jest atrybut i jakie są dla niego rodzaje zasięgów
213
Interfejs API dla atrybutów — ciemna strona atrybutów
217
Dostępne tylko dla komponentów z dostępem do określonego obiektu HttpSession
Zasięg kontekstu nie zapewnia bezpieczeństwa wątków!
220
Atrybuty ŻĄDANIA
Jak można zapewnić bezpieczeństwo wątków podczas przetwarzania
atrybutów kontekstu?
ustawia
<html>
<body>
<jsp:setProperty
name=”foo”
property=”bar”>
</body>
</html>
222
„RekomendacjaPiwosza”
Moose Drool”
serwlet
Próba wykorzystania synchronizacji
223
Kontroler
Widok JSP
Czy atrybuty sesji są bezpieczne z punktu widzenia wielowątkowości?
226
Dostępne tylko dla komponentów z dostępem do określonego obiektu ServletRequest
Zły model jednowątkowy
229
Tylko atrybuty żądania i zmienne lokalne są bezpieczne z punktu
widzenia wielowątkowości!
230
Atrybuty żądania i przydzielanie żądań
231
8
887614968.102.png 887614968.103.png 887614968.104.png 887614968.105.png 887614968.106.png 887614968.107.png 887614968.108.png 887614968.109.png 887614968.110.png 887614968.111.png 887614968.113.png 887614968.114.png 887614968.115.png 887614968.116.png 887614968.117.png 887614968.118.png 887614968.119.png 887614968.120.png 887614968.121.png 887614968.122.png 887614968.002.png 887614968.003.png 887614968.004.png 887614968.005.png 887614968.006.png 887614968.007.png 887614968.008.png 887614968.009.png 887614968.010.png
 
6 Stan konwersacyjny
Serwery WWW nie maj¹ pamiêci krótkoterminowej. Zaraz po odes³aniu do nas
odpowiedzi serwery WWW zapominaj¹, kim jesteśmy. Kiedy wysy³amy kolejne
¿¹danie, docelowy serwer WWW ju¿ nas nie rozpoznaje. Innymi s³owy, serwery
WWW nie pamiêtaj¹ ani tego, czego ¿¹daliśmy w przesz³ości, ani tego, co do nas
wys³a³y w ramach odpowiedzi. Zupe³nie nic! Jednak czasami przechowywanie
informacji o stanie konwersacji z klientem i korzystanie z niego podczas obs³ugi
kolejnych ¿¹dañ jest konieczne. Koszyk w sklepie internetowym nie dzia³a³by,
gdyby u¿ytkownik musia³ wybieraæ wszystkie towary i realizowaæ zamówienie
w ramach jednego ¿¹dania .
Cele egzaminu
250
Ciasteczka
Oto Twoje
ciasteczko
z identyfikatorem
sesji w środku…
To ma być konwersacja (jak działają sesje?)
252
”Set -Cookie” jest po pro stu
kolejnym nagłówkiem wysyłanym
w ramach odpowiedzi.
Identyfikatory sesji, ciasteczka oraz pozostałe podstawy działania sesji
257
Przepisywanie adresów URL, sposób rozwiązania problemu
263
HTTP/1.1 200 OK
Se t-Cookie : JSESSI ONID=0AA B6C8DE4 15
Conte nt-Type: text /html
Date: Wed, 19 Nov 2003 03:25:4 0 GMT
Serve r: Apache-Co yote/1.1
Conne ction: close
<html >
...
</htm l>
Kiedy sesje stają się nieaktualne — usuwanie sesji błędnych
267
Czy ciasteczka mogą mieć także inne zastosowania oprócz obsługi sesji?
276
Kluczowe momenty w życiu obiektu HttpSession
280
Dobrze, oto
moje ciasteczko
odsyłane z kolejnym
żądaniem.
”Cookie” jest kolejnym nag łówkiem
wysyłanym w rama ch żądania HTTP.
Nie zapominaj o interfejsie HttpSessionBindingListener
282
Migracja sesji
283
Przykłady klas nasłuchujących
287
7 Być stroną JSP
Strona JSP staje siê serwletem. Serwletem, którego nie musisz tworzyæ.
Kontener przegl¹da kod Twojej strony JSP, t³umaczy go na kod źród³owy
jêzyka programowania Java i kompiluje tak przet³umaczony kod na postaæ
pe³nowartościowej klasy serwletu Javy. Musisz jednak wiedzieæ, co dzieje siê
w czasie konwertowania Twojego kodu strony JSP na kod Javy. W ramach kodu
JSP mo¿esz co prawda umieszczaæ kod Javy, ale czy na pewno powinieneś?
A jeśli w kodzie stron JSP nie umieszczamy ¿adnych wyra¿eñ jêzyka Java, to
co znajdzie siê w tym kodzie? Przyjrzymy siê sześciu rodzajom elementów JSP
— z których ka¿dy ma swoje przeznaczenie i, no niestety, odmienn¹ sk³adniê .
Dowiesz siê, co i dlaczego mo¿na umieszczaæ w kodzie stron JSP. Dowiesz siê
tak¿e, czego nie nale¿y umieszczaæ w kodzie stron JSP.
Cele egzaminu
308
pisze
jest tłumaczony na
Tworzymy prostą stronę JSP wykorzystującą zmienną out i dyrektywę page
309
package head-
first;
import javax.
servlet.
HttpServlet.*;
<html>
<body>
<jsp:setProperty
name=”foo”
property=”bar”>
</body>
</html>
Wyrażenia JSP, zmienne oraz deklaracje
314
Czas się zapoznać z wygenerowanym serwletem
322
MojJSP_jsp.java
MojJSP.jsp
Zmienna out nie jest jedynym obiektem domyślnym…
324
Cykl życia i inicjalizacja stron JSP
332
jest wczytywany
i inicjalizowany
jako
Skoro już poruszyliśmy ten temat… porozmawiajmy o trzech dyrektywach
340
0010 0001
1100 1001
0001 0011
0101 0110
Obiekt serwletu
Czy skryptlety można uznać za niebezpieczne? Oto EL
343
Serwlet
MojJSP_jsp
MojJSP_jsp.class
Ale zaczekaj… nie widzieliśmy jeszcze akcji
349
9
887614968.012.png 887614968.013.png 887614968.014.png 887614968.015.png 887614968.016.png 887614968.017.png 887614968.018.png 887614968.019.png 887614968.020.png 887614968.021.png 887614968.023.png 887614968.024.png 887614968.025.png 887614968.026.png 887614968.027.png 887614968.028.png 887614968.029.png 887614968.030.png 887614968.031.png
Zgłoś jeśli naruszono regulamin