Spring MVC 4 : projektowanie zaawansowanych aplikacji WWW

Transkrypt

Spring MVC 4 : projektowanie zaawansowanych aplikacji WWW
Spring MVC 4 : projektowanie zaawansowanych aplikacji WWW /
Geoffroy Warin. – Gliwice, cop. 2016
Spis treści
O autorze
11
O korektorach merytorycznych
12
Przedmowa
15
Rozdział 1. Błyskawiczne tworzenie aplikacji Spring
Rozpoczęcie pracy w środowisku Spring Tool Suite
Rozpoczęcie pracy w środowisku IntelliJ
Rozpoczęcie pracy w serwisie start.Spring.io
Rozpoczęcie pracy za pomocą wiersza poleceń
Pierwsze kroki
Kompilowanie kodu za pomocą narzędzia Gradle
Chcę zobaczyć kod!
Spring Boot od wewnątrz
Dyspozytor i konfiguracja elementów aplikacji
Interpreter widoków, zasoby statyczne ustawienia regionalne
Konfiguracja obsługi błędów i kodowania znaków
Konfiguracja wbudowanego serwletu kontenera serwera (Tomcat)
Port http
Konfiguracja protokołu SSL
Inne opcje konfiguracyjne
Podsumowanie
19
20
25
26
26
27
28
32
34
35
38
40
42
44
44
45
46
Rozdział 2. Tajniki architektury MVC
Architektura MVC
Krytyka architektury MVC i dobre praktyki
Anemiczny model domeny
Informacje ze źródeł
Platforma MVC 1-0-1
Szablony Thymeleaf
Twoja pierwsza strona
Architektura platformy Spring MVC
Serwlet DispatcherServlet
Przekazywanie danych do widoku
Język Spring Expression Language
Użycie parametru przy odczytywaniu danych
Dosyć już „Witaj, świecie!", odczytujmy tweety!
47
47
48
48
50
50
51
52
54
54
55
56
56
58
Rejestracja aplikacji
Zastosowanie projektu Spring Social
Dostęp do serwisu Twitter
Strumienie i funkcje lambda w Java 8
Styl material design i biblioteka WebJars
Układy stron
Poruszanie się po witrynie
Punkt kontrolny
Podsumowanie
58
60
60
62
63
66
67
71
72
Rozdział 3. Obsługa formularzy i złożonych adresów URL
Strona profilu — formularz
Weryfikacja danych
Dostosowanie komunikatów o błędach
Niestandardowe adnotacje do weryfikacji danych
Internacjonalizacja
Zmiana ustawień regionalnych
Tłumaczenie tekstów aplikacji
Lista w formularzu
Weryfikacja danych po stronie klienta
Punkt kontrolny
Podsumowanie
73
73
80
82
85
85
87
89
91
94
96
96
Rozdział 4. Ładowanie plików i obsługa błędów
Ładowanie plików
Umieszczanie obrazu w odpowiedzi na zapytanie
Zarządzanie konfiguracją ładowania plików
Wyświetlenie załadowanego obrazu
Obsługa błędów ładowania plików
Tłumaczenia komunikatów o błędach
Zapisywanie profilu użytkownika w sesji
Własne strony z komunikatami o błędach
Zmienne tablicowe w adresach URL
Wszystko razem
Punkt kontrolny
Podsumowanie
99
99
104
104
107
108
112
112
116
117
121
128
129
Rozdział 5. Tworzenie aplikacji w stylu REST
Czym jest styl REST?
Model dojrzałości Richardsona
Poziom 0 - HTTP
Poziom 1 - zasoby
Poziom 2 - metody HTTP
Poziom 3 - kontrolki hipermediów
Wersje interfejsu API
131
131
132
132
132
133
134
135
Przydatne kody HTTP
Klient jest królem
Diagnostyka interfejsu REST API
Rozszerzenia przeglądarek wyświetlające format JSON
Klient REST w przeglądarce
Narzędzie httpie
Dostosowanie odpowiedzi JSON
Interfejs API do zarządzania zasobami użytkowników
Kody stanu i obsługa wyjątków
Zwrot kodu stanu za pomocą obiektu ResponseEntity
Zwrot kodów stanu za pomocą wyjątków
Dokumentowanie interfejsu za pomocą platformy Swagger
Tworzenie odpowiedzi XML
Punkt kontrolny
Podsumowanie
136
137
139
139
139
139
139
144
147
148
149
153
154
156
157
Rozdział 6. Zabezpieczanie aplikacji
Podstawowe uwierzytelnienie
Upoważnieni użytkownicy
Uprawnione adresy URL
Znaczniki bezpieczeństwa w szablonie Thymeleaf
Formularz logowania
Uwierzytelnienie przez Twitter
Konfiguracja uwierzytelnienia społecznościowego
Objaśnienia do kodu
Rozproszone sesje
Protokół SSL
Generowanie certyfikatu z własnym podpisem
Jeden kanał
Dwa kanały
Za bezpiecznym serwerem
Punkt kontrolny
Podsumowanie
159
159
160
163
164
165
170
170
174
176
178
179
179
180
181
181
182
Rozdział 7. Zero ryzyka — testy jednostkowe i integracyjne
Dlaczego powinienem testować swój kod?
Jak powinieneś testować swój kod?
Programowanie zorientowane na testy
Testy jednostkowe
Narzędzia odpowiednie do zadania
Testy integracyjne
Twój pierwszy test jednostkowy
Imitacje i atrapy
Imitowanie klas przy użyciu narzędzia Mockito
Tworzenie atrap klas podczas testów
183
183
184
185
186
187
187
188
191
191
193
Trzeba używać imitacji czy atrap?
Testy jednostkowe kontrolerów REST
Testowanie uwierzytelnienia
Tworzenie testów integracyjnych
Konfiguracja systemu Gradle
Pierwszy test FluentLenium
Obiekty stron w bibliotece FluentLenium
Tworzenie testów w języku Groovy
Testy jednostkowe z wykorzystaniem biblioteki Spock
Testy integracyjne z wykorzystaniem biblioteki Geb
Obiekty stron w bibliotece Geb
Punkt kontrolny
Podsumowanie
195
195
201
202
202
204
209
212
212
215
217
220
221
Rozdział 8. Optymalizacja zapytań
Produkcyjny profil aplikacji
Kompresja gzip
Kontrola pamięci podręcznej
Pamięć podręczna aplikacji
Unieważnianie danych w pamięci podręcznej
Rozproszona pamięć podręczna
Metody asynchroniczne
Tagi ETag
Protokół WebSocket
Punkt kontrolny
Podsumowanie
223
223
224
224
226
231
232
233
237
241
244
244
Rozdział 9. Udostępnianie aplikacji w chmurze
Wybór operatora usług chmurowych
Cloud Foundry
OpenShift
Heroku
Udostępnienie aplikacji w usłudze Pivotal Web Services
Instalacja narzędzi konsolowych Cloud Foundry
Złożenie aplikacji
Aktywacja usługi Redis
Udostępnienie aplikacji w usłudze Heroku
Instalacja narzędzi
Konfiguracja aplikacji
Profil Heroku
Uruchomienie aplikacji
Aktywacja usługi Redis
Ulepszanie aplikacji
Podsumowanie
245
245
246
246
247
247
247
248
252
253
253
254
255
256
258
259
260
Rozdział 10. Nie tylko Spring Web
Platforma Spring
Core (rdzeń)
Execution (uruchamianie)
Data (dane)
Inne ciekawe projekty
Wdrożenie
Platforma Docker
Aplikacje jednostronicowe
Najważniejsi gracze
Przyszłość
Bezstanowość
Podsumowanie
261
261
262
262
262
263
263
263
264
265
265
266
266
Skorowidz
267
oprac. BPK