Java Server Faces JSF przygotowa Micha Sapa Java

  • Slides: 29
Download presentation
Java Server Faces (JSF) przygotował Michał Słapa Java Server Faces

Java Server Faces (JSF) przygotował Michał Słapa Java Server Faces

Plan prezentacji • • • Historia i konkurencje Czym jest JSF- Idea i architektura

Plan prezentacji • • • Historia i konkurencje Czym jest JSF- Idea i architektura Budowanie aplikacji JSF Podsumowanie 11/28/2020 Java Server Faces 1

Kontekst • JSP- JSF korzysta z JSP i jest jej rozwinięciem. • JSTL- Na

Kontekst • JSP- JSF korzysta z JSP i jest jej rozwinięciem. • JSTL- Na stronach JSF możemy korzystać z komponentów Java. Server Pages Standard Tag Library. • Struts- JSF jest w stanie zastąpić Struts, może być stosowany w połączeniu z nim, wykorzystując go jako warstwę kontrolera. • Swing- JSF ma być odpowiednikiem Swing, dla sieciowego GUI HTML • Microsoft. Net i Web. Forms- konkurencja. 11/28/2020 Java Server Faces 2

Od Servletu do JSF • • • Servlety- kod HTML w klasach Javy. Początki

Od Servletu do JSF • • • Servlety- kod HTML w klasach Javy. Początki JSP- kod Java w stronie HTML. – Nie ma podziału na logikę biznesową i warstwę prezentacji. – Mało czytelny kod. Struts – Wprowadzenie modelu MVC – Biblioteki znaczników, poprawiające czytelność i modularność kodu JSP. • JSTL, JSP 2. 0 – Wprowadzenie kompletnego, mocniejszego zbioru znaczników – Wprowadzenie Expression Language – Możliwość łatwiejszego definiowania własnych znaczników 11/28/2020 Java Server Faces 3

Kalendarium JSF • Wrzesień 2002 - wydanie wczesnej specyfikacji JSF • Grudzień 2003 -

Kalendarium JSF • Wrzesień 2002 - wydanie wczesnej specyfikacji JSF • Grudzień 2003 - propozycja ostatecznej wersji specyfikacji JSF • Marzec 2004 - ostateczna wersja 1. 0 specyfikacji JSF • Marzec 2004 - J 2 EE 1. 4 SDK wspiera JSF • Maj 2004 - JSF 1. 1 • Grudzień 2004 - JSF 1. 2 • Marzec 2005 - My. Faces- pierwsza Open Source implementacja JSF 11/28/2020 Java Server Faces 4

JSF- Co to jest? • Zrąb aplikacji Java do tworzenia interface’u użytkownika dla aplikacji

JSF- Co to jest? • Zrąb aplikacji Java do tworzenia interface’u użytkownika dla aplikacji sieciowych. • Obsługuje cykl życia aplikacji internetowej za pośrednictwem servletu kontrolera. • Udostępnia zbiór komponentów do budowy warstwy widoku aplikacji, umożliwia obsługę zdarzeń użytkownika. 11/28/2020 Java Server Faces 5

Specyfikacja JSF wymagania 1. 2. 3. 4. 5. 6. 7. 8. Stworzenie zrębu dla

Specyfikacja JSF wymagania 1. 2. 3. 4. 5. 6. 7. 8. Stworzenie zrębu dla standardowych elementów GUI które mogą być edytowane przez zewnętrzne aplikacje. Stworzyć zbiór prostych, bazowych klas Java dla obiektów GUI, ich stanów oraz zdarzeń użytkownika. Klasy te mają być odpowiedzialne za cykl życia obiektów GUI, w szczególności ich stały stan w całym życiu strony. Podanie zbioru typowych elementów GUI, zawierającego również standardowe obiekty formularzy HTML. Stworzenie modelu Java. Beans do przesyłania zdarzeń pomiędzy kontrolą GUI po stronie klienta, a zachowaniem aplikacji po stronie serwera. Stworzenie API do walidacji, również wspomaganie dla walidacji po stronie klienta. Specyfikacja modelu dla internacjonalizacji GUI. Automatyczna generacja odpowiedzi dla docelowego klienta, biorąca pod uwagę wszystkie możliwe dane konfiguracyjne (wersja przeglądarki klienta). Automatyczna generacja strony zawierająca wymagane zaczepy dla obsługiwanych dostępności, tak jak zostało to zdefiniowane w WAI (Web Accessibility Initiative). 11/28/2020 Java Server Faces 6

Architektura JSF Głównymi składnikami JSF są • API służące do: – Reprezentacja komponentów UI

Architektura JSF Głównymi składnikami JSF są • API służące do: – Reprezentacja komponentów UI i obsługa ich stanów – Obsługa zdarzeń – Walidacja po stronie serwera – Konwersja danych HTML->Java – Definiowanie nawigacji strony – Obsługa wielojęzyczności aplikacji i dostępności – Rozszerzenie podstawowych funkcjonalności JSF (nowe komponenty, walidatory) 11/28/2020 Java Server Faces 7

Architektura JSF Głównymi składnikami JSF są • Dwie biblioteki tag’ów JSP – Tworzenie komponentów

Architektura JSF Głównymi składnikami JSF są • Dwie biblioteki tag’ów JSP – Tworzenie komponentów UI na stronach JSP. – Dowiązywanie komponentów do obiektów Java po stronie serwera. 11/28/2020 Java Server Faces 8

Architektura JSF Obsługa żądania HTTP 28 November 2020 Java Server Faces Źródło: http: //java.

Architektura JSF Obsługa żądania HTTP 28 November 2020 Java Server Faces Źródło: http: //java. sun. com/j 2 ee/1. 4/docs/tutorial/doc

Czemu JSF? • Prostota wytwarzania aplikacji. • Możliwość zastosowania zewnętrznych edytorów GUI. • Wyraźne

Czemu JSF? • Prostota wytwarzania aplikacji. • Możliwość zastosowania zewnętrznych edytorów GUI. • Wyraźne oddzielenie warstwy zachowania i prezentacji. Sprzyja to także podziałowi zespołu ją tworzącego • Uniwersalność. . . Możliwość tworzenia wyniku w różnych językach znakowania tekstu. 11/28/2020 Java Server Faces 10

Czemu JSF? 28 November 2020 Java Server Faces Źródło: Prezentacja Poznań Java User Group

Czemu JSF? 28 November 2020 Java Server Faces Źródło: Prezentacja Poznań Java User Group na temat JSF. Michał Małecki. Dalsze pochodzenie nieznane.

Składniki aplikacji JSF • • Typowe dla aplikacji sieciowej java: – Komponenty Java. Beans

Składniki aplikacji JSF • • Typowe dla aplikacji sieciowej java: – Komponenty Java. Beans zawierające funkcjonalności i dane aplikacji – Obiekty Event listeners – Strony, także strony JSP – Klasy pomocnicze Elementy charakterystyczne dla aplikacji JSF – Biblioteka znaczników dla komponentów użytkownika – Biblioteka znaczników dla Event handlers, walidatorów i innych akcji – Backing Beans czyli definicje powiązań obiektów aplikacji i komponentów – Komponenty UI będące posiadającymi „stany” obiektami po stronie serwera – Walidatory, konwertery, event listeners, event handlers – Obiekt konfiguracji aplikacji 11/28/2020 Java Server Faces 12

Aplikacja JSF Etapy przetwarzania żądań 28 November 2020 Java Server Faces Źródło: http: //java.

Aplikacja JSF Etapy przetwarzania żądań 28 November 2020 Java Server Faces Źródło: http: //java. sun. com/j 2 ee/1. 4/docs/tutorial/doc

Warstwa Widoku • Oparta na JSP. • Do wyświetlania potrzebna jest implementacja JSF (View

Warstwa Widoku • Oparta na JSP. • Do wyświetlania potrzebna jest implementacja JSF (View Handler). Aktualnie istnieje kilka komercyjnych implementacji (Oracle), oraz jedna, bardzo młoda i podobno niedojrzała implementacja Open Source (Apache My. Faces). • Dzięki korzystaniu z różnych implementacji JSF można generować wynik w różnych językach. 11/28/2020 Java Server Faces 14

Warstwa Widoku • Istnieją dwie podstawowe biblioteki znaczników JSP. Core(f) i Html(h). 11/28/2020 Java

Warstwa Widoku • Istnieją dwie podstawowe biblioteki znaczników JSP. Core(f) i Html(h). 11/28/2020 Java Server Faces 15

Komponenty Zadania komponentów • Wyświetlanie: – Przez sam komponent(renderes. Self()) – Poprzez wydelegowanie renderera(get.

Komponenty Zadania komponentów • Wyświetlanie: – Przez sam komponent(renderes. Self()) – Poprzez wydelegowanie renderera(get. Renderer. Type()) • Obsługa zdarzeń – Bezpośrednio przez komponent – Poprzez event handler • Walidacja danych – Za pośrednictwem zbioru walidatorów związanych z komponentem 11/28/2020 Java Server Faces 16

Komponenty 28 November 2020 Java Server Faces Źródło: http: //www. javaworld. com/javaworld/jw-122002/jw-1227 -jsf 2.

Komponenty 28 November 2020 Java Server Faces Źródło: http: //www. javaworld. com/javaworld/jw-122002/jw-1227 -jsf 2. html

Wiązanie obiektów z widokiem Io. C- Tworzenie ziarenek <managed-bean> <managed-bean-name>mynumber</managed-bean-name> <managed-bean-class> mylib. net. My.

Wiązanie obiektów z widokiem Io. C- Tworzenie ziarenek <managed-bean> <managed-bean-name>mynumber</managed-bean-name> <managed-bean-class> mylib. net. My. Number </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>minimum</property-name> <property-class>long</property-class> <value>0</value> </managed-property> </managed-bean> 11/28/2020 Java Server Faces 18

Wiązanie obiektów z widokiem Expression Language(EL) • Jego zadaniem jest łączenie obiektów Java Beans

Wiązanie obiektów z widokiem Expression Language(EL) • Jego zadaniem jest łączenie obiektów Java Beans z kodem JSP. • Wiązanie z polem obiektu <h: input. Text value="#{my. Number. divisor}" /> • Wiązanie z metodą (dla atrybutów action, action. Listener, validator, value. Change. Listener) <h: input. Text id="user. No" value="#{User. Number. Bean. user. Number}" validator="#{User. Number. Bean. validate}" /> • Obsługa nawigacji i zdarzeń poprzez wiązanie z metodami: <h: command. Link action. Listener="#{my. Number. changed}"> <h: command. Link action="#{my. Navigator. next. Site}"> 11/28/2020 Java Server Faces 19

Definiowanie Nawigacji • W pliku konfiguracji <navigation-rule> <from-view-id>/greeting. jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/response. jsp</to-view-id> </navigation-case>

Definiowanie Nawigacji • W pliku konfiguracji <navigation-rule> <from-view-id>/greeting. jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/response. jsp</to-view-id> </navigation-case> </navigation-rule> W kodzie JSP dokonujemy nawigacji przez action=”success” • Opcjonalnie za pomocą dowiązanych metod (action=”#{foo. method}”). Fasolka foo ma w przykładzie metodę method o interface public String method(); 11/28/2020 Java Server Faces 20

Obsługa zdarzeń • Dwa podstawowe sposoby: – Implementacja interface Listener i użycie znacznika f:

Obsługa zdarzeń • Dwa podstawowe sposoby: – Implementacja interface Listener i użycie znacznika f: value. Change. Listner, lub f: action. Listner – Implementacja metody w ziarenku Java. Odwołanie do niej przez atrybut komponentu. • Zdarzenia: – – Action- nawigacja. (przyciski i hiperłącza) Value-change- zmiana wartości pola. Data-model- i inne. . . Phase- wywoływane w odpowiedniej fazie przetwarzania (nie czytałem obszerniejszej dokumentacji). 11/28/2020 Java Server Faces 21

Walidacja • Jedynie po stronie serwera. • Przy użyciu standardowych walidatorów – W kodzie

Walidacja • Jedynie po stronie serwera. • Przy użyciu standardowych walidatorów – W kodzie JSP • Przy użyciu walidatorów użytkownika (implementujących interface validator) – Poprzez wskazanie klasy w znaczniku faces. Validator – Poprzez deklarację własnego znacznika w konfiguracji 11/28/2020 Java Server Faces 22

Walidacja Deklaracja własnego walidatora <validator> . . . <validator-id>Format. Validator</validator-id> <validator-class>validators. Format. Validator</validator-class> <attribute>

Walidacja Deklaracja własnego walidatora <validator> . . . <validator-id>Format. Validator</validator-id> <validator-class>validators. Format. Validator</validator-class> <attribute> . . . <attribute-name>format. Patterns</attribute-name> <attribute-class>java. lang. String</attribute-class> </attribute> </validator> 11/28/2020 Java Server Faces 23

Konwertery • Standardowe konwertery – Podanie atrybutu converter dla pola. • Możliwość definiowania konwerterów

Konwertery • Standardowe konwertery – Podanie atrybutu converter dla pola. • Możliwość definiowania konwerterów użytkownika – Deklaracja w konfiguracji – Implementacja interface Converter 11/28/2020 Java Server Faces 24

Zalety • Bardzo prosta i szybka obsługa wielu aspektów tworzenia strony- zdarzenia, wiązanie obiektów

Zalety • Bardzo prosta i szybka obsługa wielu aspektów tworzenia strony- zdarzenia, wiązanie obiektów Java. • Zrzucenie odpowiedzialności za biblioteki komponentów ma poszczególne implementacje. • Uniwersalność generowanego języka znakowania. • Możliwość użycia zewnętrznych edytorów GUI. • Podział aplikacji JSF wspiera podział pracy przy projekcie. 11/28/2020 Java Server Faces 25

Wady • • Młoda, niesprawdzona technologia. Wciąż ubogie środowisko tworzące w JSF. Kolejna technologia

Wady • • Młoda, niesprawdzona technologia. Wciąż ubogie środowisko tworzące w JSF. Kolejna technologia do opanowania. 11/28/2020 Java Server Faces 26

Gdzie szukać? • Strona JSF http: //java. sun. com/j 2 ee/javaserverfaces • Materiały o

Gdzie szukać? • Strona JSF http: //java. sun. com/j 2 ee/javaserverfaces • Materiały o JSF http: //www. jsfcentral. com • Krótka prezentacja opatrzona komentarzami http: //www. jug. poznan. pl/Spotkania/jsf • Implementacja JSF http: //incubator. apache. org/myfaces 11/28/2020 Java Server Faces 27

Dziękuje za uwagę

Dziękuje za uwagę