http://www.devcastzone.com/course,tworzenie-aplikacji-internetowych-z-uzyciem-platformy-java-ee
W ramach devcastu "Tworzenie aplikacji internetowych z użyciem platformy Java EE" nauczysz się tworzyć aplikacje webowe zgodne z platformą Java Enterprise Edition. Poznasz strukturę takich aplikacji, a także nauczysz się je tworzyć, konfigurować i wdrażać na serwerze aplikacji. Dowiesz się jak korzystać z serwletów, a także stron JSP. Poznasz zalety biblioteki JSTL, a także różne sposoby wykorzystywania danych w aplikacjach webowych - przy użyciu bibliotek JDBC i JPA. Dowiesz się także jakie innowacje związane z tworzeniem aplikacji webowej zostały wprowadzone w Javie EE 6.
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Tworzenie aplikacji internetowych z użyciem platformy Java EE
1. Tworzenie aplikacji internetowych
z użyciem platformy Java EE
Materiały pochodzą ze strony:
www.devcastzone.com
copyright BNS MEDIA
www.devcastzone.com
2. Serwlety – podstawa aplikacji
webowych
Tworzenie aplikacji internetowych
z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com
3. Spis treści
1. Struktura aplikacji webowej
2. Omówienie pliku konfiguracyjnego web.xml
3. Serwlet od podstaw – tworzenie i konfiguracja
4. Serwlety – obsługa sesji
5. Atrybuty i ich zasięgi
6. Cykl życia aplikacji a obiekty nasłuchujące
7. Bezpieczeostwo
8. Filtry a żądania
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 3
4. Struktura aplikacji webowej
• / – katalog zawierający wszelkie widoki, szablony, a
także wszystkie pliki, które mają byd dostępne
publicznie. Serwer nie udostępnia jedynie plików
zawartych w podkatalogach WEB-INF i META-INF
• /WEB-INF – katalog zawierający dodatkowe zasoby
niezbędne do prawidłowego działania aplikacji, m.in.
skompilowane klasy Java i biblioteki (JAR)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 4
5. Struktura aplikacji webowej
• /WEB-INF/web.xml – deskryptor aplikacji webowej –
plik zawierający wszystkie istotne ustawienia, mający
kluczowe znaczenie dla działania całej aplikacji
• /WEB-INF/classes – katalog zawierający
skompilowane klasy
• /WEB-INF/lib – katalog zawierający dodatkowe
biblioteki
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 5
6. Struktura aplikacji webowej
• /META-INF – zawiera plik manifest.mf – jego
obecnośd wynika z faktu, że każda aplikacja webowa
przygotowana do wdrożenia ma postad pojedynczego
archiwum WAR (Web ARchive), będącego
specyficznym przypadkiem zwykłego pliku JAR
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 6
7. Struktura aplikacji webowej
• Typowy projekt (np. tworzony w środowisku Eclipse)
zawiera również zintegrowany z projektem katalog z
plikami źródłowymi aplikacji. Pliki te nie są jednak
włączane do archiwum WAR
• Opcjonalnie: odwołania do usług sieciowych, plik
persistence.xml (plik konfiguracyjny stosowany w
technologii JPA)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 7
8. Plik konfiguracyjny web.xml
• W pliku /WEB-INF/web.xml zawarte są praktycznie
wszystkie informacje dotyczące konfiguracji aplikacji
webowej Java EE
• W Java EE 6 jego znaczenie nieco maleje, z uwagi na
możliwośd definiowania pewnych informacji
bezpośrednio w plikach źródłowych przy użyciu
adnotacji
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 8
9. Plik konfiguracyjny web.xml
• Podstawowe zastosowanie pliku web.xml to
powiązanie wzorców adresów URL z konkretnymi
klasami serwletów
• Powiązanie odbywa się dwuetapowo:
o nazwa klasy serwletu <-> nazwa serwletu
o nazwa serwletu <-> jeden lub wiele wzorców URL
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 9
10. Plik konfiguracyjny web.xml
• Pierwszy etap: przydzielenie klasie serwletu
przyjaznej nazwy:
<servlet>
<servlet-name>ListaUzytkownikow</servlet-name>
<servlet-class>szkolenie.serwlety.ListaUzytkownikow</servlet-class>
</servlet>
• Nazwa może zawierad spacje
• W pozostałej treści pliku web.xml należy odwoływad
się do serwletu tylko za pomocą nazwy
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 10
11. Plik konfiguracyjny web.xml
• Drugi etap: przypisanie serwletowi przynajmniej
jednego wzorca URL:
<servlet-mapping>
<servlet-name>ListaUzytkownikow</servlet-name>
<url-pattern>/serwlety/Lista</url-pattern>
</servlet-mapping>
• W tym momencie użytkownik po wejściu na stronę
http://localhost/Aplikacja/serwlety/Lista wywoła
ListaUzytkownikow
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 11
12. Plik konfiguracyjny web.xml
• Jako wartośd dla znacznika url-pattern można podad
następujące rodzaje wzorców:
o wzorzec dokładny – np. /serwlety/Serwlet
o wzorzec wieloznaczny – np. /serwlety/* – zostaną
dopasowane wszystkie żądania, które zawierają fragment
/serwlety/
o wzorzec rozszerzeo – *.xhtml – zostaną dopasowane
wszystkie żądania, które odwołują się do zasobów o danym
rozszerzeniu
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 12
13. Plik konfiguracyjny web.xml
• Serwlet może otrzymad parametry inicjalizacyjne
• Są one umieszczane w znaczniku <servlet>
• Dzięki nim można wpływad na działanie aplikacji bez
rekompilacji plików źródłowych
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 13
14. Plik konfiguracyjny web.xml
• Przykład:
<servlet>
<servlet-name>SerwletListaUzytkownikow</servlet-name>
<servlet-class>szkolenie.serwlety.ListaUzytkownikow</servlet-class>
<init-param>
<param-name>TrybRaportu</param-name>
<param-value>mail</param-value>
</init-param>
</servlet>
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 14
15. Serwlety – tworzenie, konfiguracja, wdrożenie
• Serwlet jest klasą, która dziedziczy po klasie
javax.servlet.GenericServlet
• Zadaniem serwletu jest obsługa żądao (request) i
generowanie odpowiedzi (response)
• Serwlet nie jest samodzielną aplikacją – jest on
uruchamiany przez kontener webowy
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 15
16. Serwlety – tworzenie, konfiguracja, wdrożenie
• Mimo istnienia uniwersalnej architektury, znaczna
większośd serwletów dziedziczy po klasie
HttpServlet, przystosowanej rzecz jasna do obsługi
żądao i odpowiedzi HTTP
• Po utworzeniu w odpowiedni sposób klasy serwletu i
dodaniu niezbędnego kodu XML do pliku web.xml
(lub adnotacji), serwlet jest gotowy do obsługi żądao
(oczywiście po uruchomieniu serwera)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 16
17. Serwlety – tworzenie, konfiguracja, wdrożenie
• Klasa serwletu, dziedzicząc po klasie
HttpServlet, musi zawierad definicję co najmniej
jednej z metod obsługujących żądania HTTP:
o doGet(), doPost(), doDelete(), doPut()
• Każda z tych metod obsługuje żądania o określonej
metodzie HTTP (GET/POST/PUT/DELETE)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 17
18. Serwlety – tworzenie, konfiguracja, wdrożenie
• Wszystkie te metody mają identyczne sygnatury
(poza nazwami):
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException
• Parametr req reprezentuje obiekt żądania, podczas
gdy resp – obiekt odpowiedzi
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 18
19. Serwlety – tworzenie, konfiguracja, wdrożenie
• Działanie serwletu w dużej mierze można uprościd do
schematu:
o pobierz niezbędne informacje z żądania
o wykonaj logikę biznesową
o wygeneruj odpowiedź, korzystając ze strumieni
dostępnych w obiekcie odpowiedzi
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 19
20. Serwlety – tworzenie, konfiguracja, wdrożenie
• Przykład:
public class PierwszySerwlet extends HttpServlet {
protected void doGet(HttpServletRequest
request, HttpServletResponse response) throws
ServletException, IOException {
PrintWriter pw = response.getWriter();
pw.println("Pierwszy serwlet!");
pw.flush();
}
}
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 20
21. Serwlety – tworzenie, konfiguracja, wdrożenie
• Przy użyciu obiektu klasy PrintWriter można
wygenerowad dane tekstowe, które trafią do
przeglądarki internetowej klienta
• W związku z tym w wywołaniach metod print/println
można przekazywad kod HTML/CSS lub w dowolnym
innym pożądanym języku obsługiwanym przez
przeglądarkę (np. SVG)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 21
22. Serwlety – tworzenie, konfiguracja, wdrożenie
• Do określenia typu przesyłanych danych należy
stosowad metodę setContentType odpowiedzi
• Jeśli zamiast obiektu klasy PrintWriter zostanie
wykorzystany obiekt klasy ServletOutputStream,
pobrany za pomocą metody getOutputStream
odpowiedzi, można przesyład dane binarne
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 22
24. Serwlety – tworzenie, konfiguracja, wdrożenie
• Istnieje możliwośd dołączenia do odpowiedzi
nagłówków i ciasteczek:
o void addHeader(String nazwa, String wartosc)
o void addCookie(Cookie ciastko)
gdzie c jest obiektem reprezentującym pojedyncze
ciastko (javax.servlet.http.Cookie)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 24
25. Serwlety – tworzenie, konfiguracja, wdrożenie
• Aby pobrad parametry przesłane w żądaniu (czy to za
pomocą metody GET, czy też POST), należy skorzystad
z metody typu HttpServletRequest:
• String getParameter(String nazwa)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 25
26. Serwlety – obsługa sesji
• Dostępna za pomocą metody getSession() obiektu
żądania
• Reprezentowana za pomocą klasy HttpSession
• Kluczowe metody:
o getAttribute() i setAttribute()
o invalidate() – czyści sesję
o isNew() – określa, czy sesja została utworzona w ramach
aktualnego żądania
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 26
27. Atrybuty i ich zasięgi
• W aplikacjach Java EE istnieje możliwośd
umieszczania danych w różnych zasięgach
• Przykład – sesja i metody get/setAttribute()
• Oprócz tego można deklarowad atrybuty w zasięgach
żądania i kontekstu aplikacji
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 27
28. Atrybuty i ich zasięgi
• W przypadku żądania dostęp do atrybutów regulują
metody get/setAttribute typu HttpServletRequest
• Kontekst aplikacji to specjalny obiekt, który
udostępnia informacje na temat całej aplikacji i
umożliwia dynamiczne modyfikowanie struktury
aplikacji (np. dodawanie serwletów)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 28
29. Atrybuty i ich zasięgi
• Atrybuty umieszczone w zasięgu kontekstu są dostępne w
obrębie całej aplikacji!
• Dostęp do atrybutów jest możliwy za pomocą metody
get/setAttribute typu ServletContext
• Instancja typu ServletContext jest dostępna na różne
sposoby, m.in. przy użyciu obiektu żądania
(req.getServletContext()) lub samego serwletu
(this.getServletContext() w metodach doGet()/doPost())
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 29
30. Atrybuty i ich zasięgi
• Korzystając z atrybutów o zasięgu kontekstu należy
pamiętad o możliwości współbieżnego dostępu przez
różnych klientów
• Z tego względu warto synchronizowad
metody/fragmenty kodu, które modyfikują mapę
atrybutów
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 30
31. Cykl życia aplikacji a obiekty nasłuchujące
• Java EE udostępnia szereg obiektów nasłuchujących,
dzięki którym istnieje możliwośd reagowania na
różne sytuacje, które mają miejsce podczas działania
aplikacji
• Najpierw należy wybrad interfejs, który udostępnia
żądane zdarzenia, a następnie dodad niezbędną
informację do pliku web.xml
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 31
32. Cykl życia aplikacji a a obiekty nasłuchujące
• Zdarzenia cyklu życia dla obiektów różnych zasięgów:
o ServletRequestListener – dla żądao:
• requestInitialized, requestDestroyed
o HttpSessionListener – dla obiektów sesji
• sessionCreated, sessionDestroyed
o ServletContextListener – dla kontekstu aplikacji
• contextInitialized, contextDestroyed
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 32
33. Cykl życia aplikacji a obiekty nasłuchujące
• Zdarzenia modyfikacji atrybutów o różnych
zasięgach:
o ServletRequestAttributeListener:
• attributeAdded, attributeRemoved, attributeReplaced
o ServletContextAttributeListener:
• j.w.
o HttpSessionAttributeListener:
• j.w.
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 33
34. Cykl życia aplikacji a obiekty nasłuchujące
• Zdarzenia odpowiedzialne za informowanie obiektów
o umieszczeniu ich w zasięgu sesji:
o HttpSessionBindingListener:
• valueBound() – obiekt został dodany do mapy atrybutów o zasięgu
sesji
• valueUnbound() – obiekt został usunięty z mapy atrybutów o
zasięgu sesji
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 34
35. Cykl życia aplikacji a obiekty nasłuchujące
• Zdarzenia odpowiedzialne za informowanie obiektów
o przeniesieniu sesji do innej maszyny wirtualnej
o HttpSessionActivationListener:
• sessionDidActivate() – sesja została aktywowana po przeniesieniu z
innej VM
• sessionWillPassivate() – sesja zostanie wyłączona w celu
przeniesienia do innej VM
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 35
36. Cykl życia aplikacji a obiekty nasłuchujące
• Po utworzeniu klasy obiektu nasłuchującego należy
dodad niezbędny kod do pliku web.xml (lub
zastosowad adnotację):
<listener>
<listener-class>szkolenie.sluchacze.SluchaczSesji</listener-class>
</listener>
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 36
37. Bezpieczeostwo
• Aplikacje webowe pozwalają na konfigurację różnych
aspektów bezpieczeostwa w pliku web.xml (w Java EE
6 także za pomocą adnotacji)
• Konfiguracja ta jest zupełnie odseparowana od kodu
serwletów czy też stron JSP – pomijając opcjonalne
mechanizmy, z których można korzystad (np.
sprawdzenie, czy użytkownik przynależy do roli)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 37
38. Bezpieczeostwo
• Najważniejsze aspekty konfiguracji bezpieczeostwa:
o określenie ról aplikacji
o określenie źródła danych bezpieczeostwa (w przypadku
serwera Apache Tomcat może byd to statyczny plik tomcat-
users.xml, a mogą byd to wybrane tabele z bazy danych)
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 38
39. Bezpieczeostwo
• Najważniejsze aspekty konfiguracji bezpieczeostwa:
o określenie wzorców URL, których dotyczą reguły
bezpieczeostwa, wraz z dozwolonymi metodami HTTP
o powiązanie wzorców i ról (w pliku web.xml), a także ról i
użytkowników (np. w bazie danych) pozwala na utworzenie
kompletnego systemu bezpieczeostwa w aplikacji
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 39
40. Bezpieczeostwo
• Najważniejsze aspekty konfiguracji bezpieczeostwa:
o Istnieją też dodatkowe aspekty, jak określenie
minimalnego stopnia zabezpieczeo (np. SSL), metody
uwierzytelniania, itd.
• Separacja ustawieo bezpieczeostwa od kodu Java
pozwala na przydział zadao związanych z konfiguracją
i bezpieczeostwem np. innemu pracownikowi
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 40
42. Filtry a żądania
• Filtr to mechanizm, który pozwala na wykonanie
pewnej czynności przed przekazaniem sterowania do
odpowiedniego serwletu
• Filtry, podobnie jak serwlety, mogą byd aplikowane
do wzorców URL
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 42
43. Filtry a żądania
• Filtry są stosowane wszędzie tam, gdzie konieczna
jest wstępna obróbka żądao, np.:
o rejestrowanie informacji w dzienniku
o szyfrowanie/deszyfrowanie
o kompresja
o dynamiczna decyzja o przekazaniu sterowania do serwletu
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 43
44. Filtry a żądania
• Przykład:
// przekaż sterowanie do serwletu, jeśli istnieje parametr o nazwie X
public class FiltrUzytkownikow implements Filter {
public void doFilter(ServletRequest request, ServletResponse
response, FilterChain chain) throws IOException,
ServletException {
System.out.println("Przed obsługą");
if (request.getParameter("nazwaUzytkownika")!=null)
chain.doFilter(request, response);
System.out.println("Po obsłudze");
}
public void init(FilterConfig fConfig) throws ServletException {}
@Override
public void destroy() {}
}
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 44
45. Filtry a żądania
• Przykład (konfiguracja w pliku web.xml):
<filter>
<filter-name>FiltrUzytkownikow</filter-name>
<filter-class>szkolenie.filtry.FiltrUzytkownikow</filter-class>
</filter>
<filter-mapping>
<filter-name>FiltrUzytkownikow</filter-name>
<url-pattern>/serwlety/*</url-pattern>
</filter-mapping>
Tworzenie aplikacji internetowych z użyciem platformy Java EE
copyright BNS MEDIA
www.devcastzone.com 45
46. Tworzenie aplikacji internetowych
z użyciem platformy Java EE – program pełnego szkolenia
1. Wprowadzenie do świata aplikacji webowych Java EE
o Aplikacje webowe a okienkowe – porównanie modeli
o Pojęcia związane z tworzeniem aplikacji webowych
o Stos aplikacji webowej Java EE
o Konfiguracja środowiska do pracy
2. Scala – składnia języka, funkcje, zmienne, pakiety, klasy
o Struktura aplikacji webowej
o Omówienie pliku konfiguracyjnego web.xml
o Serwlet od podstaw – tworzenie i konfiguracja
o Serwlety – obsługa sesji
o Atrybuty i ich zasięgi
o Cykl życia aplikacji a obiekty nasłuchujące
o Bezpieczeostwo
o Filtry a żądania
Programowanie w języku Scala
copyright BNS MEDIA
www.devcastzone.com 46
47. Tworzenie aplikacji internetowych
z użyciem platformy Java EE – program pełnego szkolenia
3. JSP – tworzenie interfejsów użytkownika
o JSP jako metoda separacji widoku od serwletów
o Przekazywanie informacji do stron JSP
o Expression Language – język wyrażeo
o Wyrażenia i operatory
o Akcje, czyli specjalne znaczniki JSP
o Dyrektywy JSP
o Legacy code – na co uważad w przestarzałym kodzie
4. JSTL – biblioteka wspomagająca działanie JSP
o JSTL – krótka charakterystyka
o Znaczniki bazowe (rdzeo)
o Znaczniki funkcyjne
o Znaczniki formatujące
Programowanie w języku Scala
copyright BNS MEDIA
www.devcastzone.com 47
48. Tworzenie aplikacji internetowych
z użyciem platformy Java EE – program pełnego szkolenia
5. Obsługa danych przy użyciu JDBC i JPA
o JDBC – podstawowy mechanizm obsługi bazy danych w Javie
o Separacja kodu obsługi JDBC od serwletów
o JPA – struktura i zasady działania
o Adnotacje JPA jako sposób oznaczania klas encji
o Wdrożenie JPA w aplikacji webowej
6. Nowości w Java EE 6
o Adnotacje jako narzędzie do konfigurowania serwletów
o Uwierzytelnianie na poziomie serwletów
o Wywołania asynchroniczne
o Modularnośd a konfiguracja w pliku web.xml
Programowanie w języku Scala
copyright BNS MEDIA
www.devcastzone.com 48
49. Tworzenie aplikacji internetowych
z użyciem platformy Java EE
http://www.devcastzone.com/course,tworzenie-aplikacji-
internetowych-z-uzyciem-platformy-java-ee
Zapraszamy
Programowanie w języku Scala
copyright BNS MEDIA
www.devcastzone.com 49