Książka jest NOWA, w stanie IDEALNYM. Niezależnie od ilości zakupionych książek płacisz tylko jednorazowy koszt wysyłki. Core Java Servlets i JavaServer Pages. Tom II. Wydanie II
Wydawnictwo: Helion Kompletny przewodnik po zaawansowanych mechanizmach oraz funkcjach serwletów i JSP.
- Jak kontrolować działanie aplikacji za pośrednictwem pliku deskryptora?
- Jakie są możliwości rozbudowy systemu zabezpieczeń?
- Jak można wykorzystać obsługę zdarzeń?
Platforma Java 2 jest najczęściej wykorzystywaną technologią do budowy komercyjnych aplikacji internetowych, dynamicznych witryn WWW oraz aplikacji i usług sieciowych. Jej podstawą są serwlety i strony JSP, które są obsługiwane - przy użyciu komponentów wbudowanych lub dodatkowych - na praktycznie wszystkich serwerach WWW, a jednocześnie stanowią połączenie między klientami internetowymi i aplikacjami działającymi na serwerze.
Tom II prezentuje zaawansowane narzędzia i techniki służące do tworzenia rozbudowanych i wysoko wydajnych aplikacji. Opisano w nim mechanizmy kontroli działania aplikacji za pomocą pliku web.xml, możliwości rozszerzenia systemu zabezpieczeń metodami deklaratywnymi i programistycznymi, a także sposoby używania filtrów serwletów i JSP. Przedstawiono tu także opis funkcji rzadziej używanych, lecz niezwykle przydatnych podczas tworzenia złożonych programów. Książka "Core Servlets i Java Server Pages. Tom II. Technologie zaawansowane. Wydanie drugie" to wyczerpujący podręcznik dla programistów znających już podstawy technologiczne serwletów i stron JSP, którzy chcą poznać i wykorzystać ich zaawansowane możliwości.
Tom I zawiera szczegółowy opis serwletów i stron JSP, w tym nagłówki HTTP, pliki cookie, mechanizm śledzenia sesji, elementy skryptowe JSP, dołączanie plików, architekturę Model-Widok-Kontroler (MVC) i język wyrażeń JSP. Znajdziesz tam także opis formularzy HTML, JDBC oraz najlepsze praktyki projektowania i implementowania aplikacji. Wykorzystaj wszystkie możliwości serwletów i stron JSP, aby tworzyć profesjonalne aplikacje!
- Deskryptor wdrożenia
- Zabezpieczenia programistyczne i deklaratywne
- Filtry serwletów i stron JSP
- Model i obsługa zdarzeń
- Własne biblioteki znaczników
- Platforma Apache Struts
Spis treści: Wprowadzenie (11)
Podziękowania (15)
O autorach (16)
Rozdział 1. Używanie i wdrażanie aplikacji internetowych (17)
- 1.1. Cele aplikacji internetowych (18)
- Organizacja (18)
- Przenośność (18)
- Separacja (18)
- 1.2. Struktura aplikacji internetowych (19)
- Lokalizacje poszczególnych rodzajów plików (19)
- 1.3. Rejestrowanie aplikacji internetowych na serwerze (23)
- Rejestrowanie aplikacji internetowych na serwerze Tomcat (24)
- Rejestrowanie aplikacji internetowych na innych serwerach (26)
- 1.4. Strategie rozwoju i wdrażania aplikacji internetowych (28)
- Kopiowanie struktury do skrótu lub dowiązania symbolicznego (29)
- Wykorzystanie funkcji wdrażania udostępnianych przez IDE (30)
- Używanie narzędzi ant, maven i im podobnych (30)
- Używanie IDE wraz z narzędziem Ant (31)
- 1.5. Umieszczanie aplikacji internetowych w plikach WAR (31)
- 1.6. Tworzenie prostej aplikacji internetowej (32)
- Pobranie aplikacji app-blank i zmiana jej nazwy na testApp (33)
- Pobranie plików test.html, test.jsp oraz TestServlet.java (33)
- Dodanie plików test.html i test.jsp do aplikacji internetowej testApp (33)
- Umieszczenie pliku TestServlet.java w katalogu testApp/WEB-INF/classes/coreservlets (34)
- Kompilacja pliku TestServlet.java (34)
- Zadeklarowanie w pliku web.xml klasy TestServlet.class oraz adresu URL, który ją wywołuje (35)
- Skopiowanie aplikacji testApp do katalogu katalog_tomcat/webapps (36)
- Uruchomienie serwera Tomcat (36)
- Wywołanie aplikacji testApp przy użyciu adresu URL w postaci http://localhost/testApp/zasób (37)
- 1.7. Współużytkowanie danych przez aplikacje internetowe (39)
Rozdział 2. Kontrolowanie działania aplikacji przy użyciu deskryptora web.xml (47)
- 2.1. Przeznaczenie deskryptora wdrożenia (48)
- 2.2. Definiowanie elementu głównego i elementu nagłówka (48)
- 2.3. Elementy deskryptora web.xml (50)
- Wersja 2.4 specyfikacji serwletów (50)
- Wersja 2.3 specyfikacji serwletów (53)
- 2.4. Przypisywanie nazw i własnych adresów URL (55)
- Przypisywanie nazw (56)
- Definiowanie własnych adresów URL (57)
- Nazewnictwo stron JSP (62)
- 2.5. Wyłączanie serwletu wywołującego (64)
- Zmiana odwzorowania wzorca adresu URL /servlet/ (65)
- Globalne wyłączanie serwletu wywołującego na serwerze Tomcat (66)
- 2.6. Inicjalizowanie i wstępne ładowanie serwletów i stron JSP (68)
- Przypisywanie serwletom parametrów inicjalizacyjnych (68)
- Przypisywanie parametrów inicjalizacyjnych JSP (71)
- Parametry inicjalizacyjne na poziomie całej aplikacji (74)
- Ładowanie serwletów w momencie uruchamiania serwera (74)
- 2.7. Deklarowanie filtrów (78)
- 2.8. Definiowanie stron powitalnych (81)
- 2.9. Wyznaczanie stron obsługujących błędy (81)
- Element error-code (82)
- Element exception-type (84)
- 2.10. Definiowanie zabezpieczeń (86)
- Definiowanie metody uwierzytelniania (86)
- Ograniczanie dostępu do zasobów sieciowych (88)
- Przypisywanie ról (91)
- 2.11. Kontrolowanie czasu wygasania sesji (92)
- 2.12. Dokumentowanie aplikacji internetowych (92)
- 2.13. Przypisywanie plikom typów MIME (93)
- 2.14. Konfigurowanie stron JSP (94)
- Lokalizacja deskryptorów bibliotek znaczników (94)
- Konfigurowanie właściwości stron JSP (95)
- 2.15. Kodowanie znaków (100)
- 2.16. Tworzenie procesów nasłuchujących zdarzeń aplikacji (100)
- 2.17. Tworzenie rozwiązań przeznaczonych dla środowisk klastrowych (101)
- 2.18. Elementy J2EE (104)
Rozdział 3. Zabezpieczenia deklaratywne (109)
- 3.1. Uwierzytelnianie przy użyciu formularza (111)
- Definiowanie nazw użytkowników, haseł i ról (113)
- Włączanie na serwerze uwierzytelniania przy użyciu formularzy i wskazywanie lokalizacji strony logowania oraz strony obsługi błędu logowania (114)
- Tworzenie strony logowania (115)
- Tworzenie strony z informacją o błędzie logowania (118)
- Wskazywanie adresów URL, które mają być zabezpieczone hasłem (118)
- Zdefiniowanie listy wszystkich abstrakcyjnych ról (122)
- Wskazywanie adresów URL dostępnych wyłącznie za pośrednictwem protokołu SSL (122)
- Wyłączanie serwletu wywołującego (124)
- 3.2. Przykład. Uwierzytelnianie przy użyciu formularzy (125)
- Strona główna (125)
- Deskryptor wdrożenia (126)
- Plik z hasłami (129)
- Strony logowania i obsługi błędu logowania (130)
- Katalog investing (131)
- Katalog ssl (134)
- Katalog admin (137)
- Serwlet NoInvokerServlet (140)
- Strony niezabezpieczone (141)
- 3.3. Uwierzytelnianie metodą BASIC (144)
- Definiowanie nazw użytkowników, haseł i ról (146)
- Włączanie na serwerze uwierzytelniania metodą BASIC i definiowanie nazwy obszaru (146)
- Wskazywanie adresów URL, które mają być zabezpieczone hasłem (146)
- Zdefiniowanie listy wszystkich abstrakcyjnych ról (147)
- Wskazywanie adresów URL dostępnych wyłącznie za pośrednictwem protokołu SSL (147)
- 3.4. Przykład. Uwierzytelnianie metodą BASIC (147)
- Strona główna (148)
- Deskryptor wdrożenia (149)
- Plik haseł (151)
- Plan finansowy (151)
- Biznesplan (152)
- Serwlet NoInvokerServlet (154)
- 3.5. Konfigurowanie obsługi protokołu SSL na serwerze Tomcat (155)
- 3.6. WebClient. Interaktywna komunikacja z serwerami WWW (161)
- 3.7. Podpisywanie certyfikatu serwera (164)
- Eksport certyfikatu CA (166)
- Komunikacja klienta WebClient z serwerem Tomcat przy użyciu protokołu SSL (170)
Rozdział 4. Zabezpieczenia programistyczne (173)
- 4.1. Łączenie zabezpieczeń programistycznych i zabezpieczeń zarządzanych przez kontener (175)
- 4.2. Przykład. Łączenie zabezpieczeń programistycznych i zabezpieczeń zarządzanych przez kontener (177)
- 4.3. Zastosowanie wyłącznie zabezpieczeń programistycznych (180)
- 4.4. Przykład. Zastosowanie wyłącznie zabezpieczeń programistycznych (184)
- 4.5. Zabezpieczenia programistyczne i protokół SSL (187)
- Ustalenie, czy używany jest protokół SSL (188)
- Przekierowywanie wywołań, które nie dotyczą protokołu SSL (188)
- Odczytanie liczby bitów w kluczu (189)
- Sprawdzenie algorytmu szyfrowania (189)
- Dostęp do certyfikatu X.509 klienta (189)
- 4.6. Przykład. Zabezpieczenia programistyczne i protokół SSL (190)
Rozdział 5. Filtry serwletów i stron JSP (195)
- 5.1. Tworzenie prostych filtrów (196)
- Tworzenie klasy implementującej interfejs Filter (197)
- Implementacja filtra w metodzie doFilter (198)
- Wywołanie metody doFilter obiektu FilterChain (198)
- Rejestrowanie filtra dla serwletów lub stron JSP (198)
- Wyłączenie serwletu wywołującego (200)
- 5.2. Przykład. Filtr raportujący (201)
- 5.3. Dostęp do kontekstu serwletu z poziomu filtra (207)
- 5.4. Przykład. Filtr zapisujący do dziennika (208)
- 5.5. Używanie parametrów inicjalizujących dla filtrów (210)
- 5.6. Przykład. Filtr czasu udostępnienia (212)
- 5.7. Blokowanie odpowiedzi (215)
- 5.8. Przykład. Filtr blokujący stronę (215)
- 5.9. Modyfikowanie odpowiedzi (221)
- Obiekt przechowujący odpowiedź, gotowy do wielokrotnego wykorzystania (222)
- 5.10. Przykład. Filtr zastępujący (224)
- Ogólny filtr modyfikujący (224)
- Konkretny filtr modyfikujący (225)
- 5.11. Przykład. Filtr kompresujący (230)
- 5.12. Konfigurowanie współpracy filtra z obiektem RequestDispatcher (235)
- 5.13. Przykład. Łatanie potencjalnej dziury w zabezpieczeniach (237)
- 5.14. Pełna definicja deskryptora wdrożenia (243)
Rozdział 6. Model zdarzeń aplikacji (249)
- 6.1. Monitorowanie zdarzeń polegających na utworzeniu i zniszczeniu kontekstu serwletu (252)
- 6.2. Przykład. Inicjalizowanie współużytkowanych danych (253)
- 6.3. Wykrywanie zmian wartości atrybutów kontekstu serwletu (258)
- 6.4. Monitorowanie zmian we współużytkowanych danych (259)
- 6.5. Umieszczanie obiektów nasłuchujących w bibliotekach znaczników (267)
- 6.6. Przykład. Pakiet zawierający obiekty śledzące nazwę firmy (269)
- 6.7. Wykrywanie zdarzeń tworzenia i niszczenia sesji (275)
- 6.8. Przykład. Obiekt nasłuchujący, który zlicza sesje (276)
- Wyłączanie obsługi plików cookie (282)
- 6.9. Wykrywanie zmian w atrybutach sesji (283)
- 6.10. Przykład. Monitorowanie zamówień na jachty (283)
- 6.11. Wykrywanie inicjalizacji i zniszczenia żądania serwletu (290)
- 6.12. Przykład. Obliczanie obciążenia serwera żądaniami (291)
- 6.13. Wykrywanie zmian atrybutów w żądaniach serwletów (296)
- 6.14. Przykład. Zatrzymywanie obiektu zbierania statystyk żądań (297)
- 6.15. Wykorzystanie wielu obiektów nasłuchujących współpracujących ze sobą (299)
- Śledzenie zamówień na towary z oferty dnia (300)
- Resetowanie licznika zamówień na oferty dnia (306)
- 6.16. Pełna definicja deskryptora wdrożenia (311)
Rozdział 7. Podstawowe informacje na temat bibliotek znaczników (317)
- 7.1. Komponenty biblioteki znaczników (318)
- Klasa obsługi znacznika (319)
- Plik deskryptora biblioteki znaczników (320)
- Plik JSP (321)
- 7.2. Przykład. Prosty znacznik liczby pierwszej (322)
- 7.3. Przypisywanie znacznikom atrybutów (326)
- Atrybuty znacznika a klasa obsługi znacznika (326)
- Atrybuty znacznika a deskryptor biblioteki znaczników (327)
- Atrybuty znacznika a plik JSP (328)
- 7.4. Przykład. Znacznik liczby pierwszej o zmiennej długości (328)
- 7.5. Zamieszczanie treści znacznika w danych zwracanych przez znacznik (330)
- Treść znacznika a klasa obsługi znacznika (330)
- Treść znacznika a deskryptor biblioteki znaczników (331)
- Treść znacznika a plik JSP (331)
- 7.6. Przykład. Znacznik nagłówka (332)
- 7.7. Przykład. Znacznik debugowania (335)
- 7.8. Tworzenie plików znaczników (337)
- 7.9. Przykład. Prosty znacznik liczby pierwszej z użyciem pliku znacznika (339)
- 7.10. Przykład. Znacznik liczby pierwszej o zmiennej długości z użyciem pliku znacznika (340)
- 7.11. Przykład. Znacznik nagłówka z użyciem pliku znacznika (341)
Rozdział 8. Biblioteki znaczników. Funkcje zaawansowane (345)
- 8.1. Operacje na treści znacznika (346)
- 8.2. Przykład. Znacznik filtrujący kod HTML (347)
- 8.3. Przypisywanie atrybutom znaczników wartości dynamicznych (350)
- Dynamiczne wartości atrybutów a klasa obsługi znacznika (351)
- Dynamiczne wartości atrybutów a deskryptor biblioteki znaczników (351)
- Dynamiczne wartości atrybutów a plik JSP (351)
- 8.4. Przykład. Prosty znacznik wykonujący pętlę (352)
- 8.5. Przypisywanie atrybutom znaczników wartości w postaci złożonych obiektów (356)
- Dynamiczne, złożone wartości atrybutów a klasa obsługi znacznika (356)
- Dynamiczne, złożone wartości atrybutów a deskryptor biblioteki znaczników (356)
- Dynamiczne, złożone wartości atrybutów a plik JSP (357)
- 8.6. Przykład. Znacznik formatujący tabele (357)
- 8.7. Tworzenie znaczników wykonujących pętle (362)
- 8.8. Przykład. Znacznik forEach (363)
- 8.9. Tworzenie funkcji języka wyrażeń (367)
- 8.10. Przykład. Ulepszony znacznik debugowania (369)
- 8.11. Obsługa zagnieżdżonych znaczników niestandardowych (372)
- 8.12. Przykład. Znacznik If-Then-Else (373)
Rozdział 9. Biblioteka standardowych znaczników JSP (JSTL) (379)
- 9.1. Instalacja biblioteki JSTL (380)
- 9.2. Znacznik c:out (381)
- 9.3. Znaczniki c:forEach i c:forTokens (382)
- 9.4. Znacznik c:if (383)
- 9.5. Znacznik c:choose (384)
- 9.6. Znaczniki c:set i c:remove (386)
- 9.7. Znacznik c:import (388)
- 9.8. Znaczniki c:url i c:param (391)
- 9.9. Znacznik c:redirect (392)
- 9.10. Znacznik c:catch (394)
Rozdział 10. Podstawy platformy Struts (397)
- 10.1. Podstawy Struts (398)
- Różne strony Struts (398)
- Zalety platformy Apache Struts w porównaniu z MVC z obiektem RequestDispatcher i JSP EL (398)
- Wady platformy Apache Struts w porównaniu z MVC z obiektem RequestDispatcher i EL (400)
- 10.2. Instalacja i konfiguracja platformy Struts (402)
- Instalacja Struts (402)
- Testowanie platformy Struts (404)
- Tworzenie własnych aplikacji Struts (405)
- Dodawanie Struts do już istniejącej aplikacji internetowej (405)
- 10.3. Proces przetwarzania Struts i sześć kroków do jego implementacji (406)
- Proces przetwarzania na platformie Struts (406)
- Sześć podstawowych kroków w pracy ze Struts (410)
- 10.4. Przetwarzanie żądań przez obiekty Action (414)
- Działanie obiektów Action (415)
- Przykład. Odwzorowanie jednego wyniku (418)
- Przykład. Odwzorowanie kilku wyników (424)
- Łączenie współużytkowanych odwzorowań warunków (432)
- 10.5. Obsługa parametrów żądań w komponentach bean formularzy (434)
- Proces przetwarzania na platformie Struts z uwzględnieniem komponentów bean (434)
- Sześć podstawowych kroków w pracy ze Struts (436)
- Działanie komponentów bean formularzy (438)
- Wyświetlanie właściwości komponentu bean (440)
- Przykład. Komponenty bean formularza i danych wynikowych (442)
- 10.6. Wstępne wypełnianie formularzy danymi i ich ponowne wyświetlanie (453)
- Proces przetwarzania na platformie Struts (454)
- Sześć podstawowych kroków w pracy ze Struts (455)
- Wykorzystanie znaczników html: platformy Struts (458)
- Wypełnianie formularzy danymi początkowymi (459)
- Przykład. Wypełnianie formularzy danymi początkowymi (460)
- Strategie tworzenia adresów URL dla obiektów Action (469)
- Ponowne wyświetlanie formularzy (472)
- Przykład. Ponowne wyświetlanie formularza (475)
Rozdział 11. Platforma Struts. Funkcje dodatkowe (485)
- 11.1. Wykorzystanie plików właściwości (486)
- Zalety plików właściwości (486)
- Działanie platformy Struts z uwzględnieniem plików właściwości (486)
- Sposób używania plików właściwości (487)
- Przykład. Proste komunikaty (491)
- Klucze dynamiczne (496)
- Komunikaty parametryzowane (497)
- 11.2. Umiędzynaradawianie aplikacji (498)
- Ładowanie językowych wersji pliku właściwości (498)
- Definiowanie ustawień językowych w przeglądarkach (498)
- Przykład. Polska, hiszpańska i francuska wersja językowa (499)
- Wyniki (500)
- 11.3. Definiowanie układu stron przy użyciu modułu Tiles (501)
- Powody, dla których warto używać Tiles (501)
- Wymagania wstępne modułu Tiles (502)
- Cztery kroki w pracy z Tiles (503)
- Prosta aplikacja wykorzystująca Tiles (506)
- Obsługa względnych adresów URL (510)
- Przykład. Aplikacja e-boats (511)
- 11.4. Wykorzystanie Tiles Definitions (519)
- Powody, dla których warto używać Tiles Definitions (521)
- Pięć kroków w pracy z Tiles Definitions (522)
- Przykład. Aplikacja e-boats wykorzystująca moduł Tiles Definitions (525)
Rozdział 12. Platforma Struts. Weryfikacja poprawności danych wpisanych przez użytkownika (529)
- 12.1. Weryfikacja poprawności danych w klasie Action (530)
- Proces przetwarzania Struts (531)
- Przeprowadzenie weryfikacji danych w klasie Action (531)
- Przykład. Wybór kolorów i rozmiarów czcionek wykorzystywanych w życiorysie (534)
- 12.2. Weryfikacja poprawności danych w komponencie bean formularza (541)
- Proces przetwarzania Struts (542)
- Przeprowadzenie weryfikacji danych w komponencie ActionForm (542)
- Przykład. Wybór kolorów i rozmiarów czcionek wykorzystywanych w życiorysie (wersja druga) (546)
- Parametryzowane komunikaty o błędach (553)
- Przykład. Weryfikacja poprawności danych z wykorzystaniem parametryzowanych komunikatów (553)
- 12.3. Wykorzystanie platformy automatycznej weryfikacji poprawności danych (556)
- Weryfikacja ręczna a weryfikacja automatyczna (556)
- Weryfikacja na kliencie a weryfikacja na serwerze (557)
- Proces przetwarzania Struts (558)
- Konfiguracja mechanizmu automatycznej weryfikacji danych (559)
- Przykład. Automatyczna weryfikacja poprawności danych (565)
Dodatek A: Tworzenie aplikacji przy użyciu Apache Ant (575)
- A.1. Najważniejsze zalety Ant (576)
- A.2. Instalacja i konfiguracja Ant (576)
- A.3. Tworzenie projektu Ant (577)
- Definiowanie projektu Ant (578)
- Definiowanie celów (580)
- Przypisywanie zadań do celów (581)
- Uruchamianie celu Ant (581)
- A.4. Przegląd najczęściej używanych zadań Ant (582)
- Zadanie echo (582)
- Zadanie tstamp (583)
- Zadanie mkdir (584)
- Zadanie delete (584)
- Zadanie copy (586)
- Zadanie javac (588)
- A.5. Przykład. Prosty projekt Ant (591)
- A.6. Tworzenie aplikacji internetowej przy użyciu Ant (596)
- Zależności między celami Ant (597)
- A.7. Przykład. Wykonanie aplikacji internetowej (598)
- Cel prepare (600)
- Cel copy (601)
- Cel build (602)
- A.8. Tworzenie pliku WAR przy użyciu Ant (603)
- Zadanie jar (603)
- Zadanie manifest (605)
- A.9. Przykład. Tworzenie pliku WAR aplikacji internetowej (606)
Skorowidz (611)
|