Poznań Java User Group 2005. Java Server Faces. Wprowadzenie (Fakty i Mity)



Podobne dokumenty
Java Server Faces - wprowadzenie

Java Server Faces narzędzie do implementacji w wy prezentacji

JavaServer Faces (JSF)

JAVA SERVER FACES jest to nowy framework Javy do tworzenia interface u użytkownika dla aplikacji sieciowych.

Tworzenie aplikacji J2EE w technologii JavaServer Faces (JSF)

Web frameworks do budowy aplikacji zgodnych z J2EE

Zastosowanie słuchaczy zdarzeń wg

Infrastruktura aplikacji WWW II

Zastosowanie technologii Ajax w ramach technologii JavaServer Faces wg

Złożone komponenty JSF wg

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie Wykład 2 Technologie internetowe

Szkolenie wycofane z oferty

Złożone komponenty JSF wg

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Podstawy technologii JavaServer Faces wg

Facelets ViewHandler

Aplikacje WWW - laboratorium

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Programowanie w Javie 2. Płock, 26 luty 2014 r.

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Wprowadzenie do projektu QualitySpy

Tworzenie aplikacji J2EE w oparciu o Oracle Application Development Framework (ADF)

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

1 Wprowadzenie do J2EE

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Wybrane działy Informatyki Stosowanej

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń, zastosowanie walidatorów, wykonanie listy typu Drop Down List.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Przegląd d innych rozwiąza. zań szkieletowych dla J2EE

6. Powtórz kroki z punktu 5. dla strony sorry.jsp, zmieniając jedynie treść wyświetlanego tekstu ( Niestety zamiast Witaj )

Java Enterprise Edition

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Zagadnienia Programowania Obiektowego Agata Hejmej

Programowanie Obiektowe GUI

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Java. Michał Wójcik.

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Podstawowe informacje o technologii Java Persistence API - przykład

Konwersja danych. Programowanie komponentowe 4. wg bnaph.html

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

Zaawansowane Aplikacje Internetowe

Programowanie wielowarstwowe i komponentowe

Tomasz Grześ. Systemy zarządzania treścią

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Modele danych walidacja widoki zorientowane na model

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

JAVA EE 8. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Aplikacje internetowe - laboratorium

Anna Fiedorowicz Bazy danych 2

Apache Wicket. Bartosz Bekier

Technologie internetowe ASP.NET Core. Paweł Rajba

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Podstawy technologi JavaServer Faces

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

termin. Podobna wada 2) jak w Sklep_6

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

)<h:commandLink action="#{managed _produkt.dane_pro duktu}" value="ok" actionlistener="#{m anaged_produkt.

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Porównanie wybranych bibliotek do tworzenia graficznego interfejsu internetowych aplikacji JEE

Serwery aplikacji. dr Radosław Matusik. radmat

Aplikacje WWW - laboratorium

Programowanie obiektowe

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Nowoczesne aplikacje internetowe oparte na Spring Framework, JSF, JPA i AJAX

Wybrane działy Informatyki Stosowanej

JBoss Seam: framework nowej generacji. Copyright Piotr Kochański & Erudis,

Wzorce architektoniczne

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Kurs programowania aplikacji bazodanowych

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Aplikacje WWW Wprowadzenie

Budowa prostej aplikacji wielowarstwowej

MVVM Light Toolkit. Julita Borkowska

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

Java EE: JSF + EJB + JPA + CDI + BV

Projekt ATENA - system wspomagaj cy zarz dzanie szkoª lub zespoªem szkóª przedlicealnych

Zaawansowane programowanie obiektowe - wykład 5

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

System zarządzający grami programistycznymi Meridius

Java - interfejs graficzny

Transkrypt:

Poznań Java User Group 2005 Java Server Faces Wprowadzenie (Fakty i Mity)

Plan prezentacji Ograniczenia szkieletów WWW Podstawowe elementy JSF JSF krok po kroku: Warstwa wizualna Obsługa zdarzeń Nawigacja Podsumowanie

Ograniczenia szkieletów WWW

Wady szkieletów WWW Mnogość rozwiązań (kilkadziesiąt mniej lub bardziej popularnych rozwiązań) Brak zorientowania na komponenty Brak zorientowania na zdarzenia (bliski związek z HTTP) Słabe wsparcie ze strony narzędzi WYSWIG (wynikające z powyższych)

Wady szkieletów WWW Poprzednie stwierdzenia nie są prawdziwe dla wszystkich rozwiązań (Barracuda, Web on Swing, W4toolkit) ALE żadne z popularnych rozwiązań poprzedniej generacji (Struts, Spring MVC, WebWork2) nie rozwiązało tych kwestii

Obietnice JSF Prostota wytwarzania aplikacji porównywalna z ASP.NET Duże wsparcie ze strony narzędzi WYSWIG Wiele konkurencyjnych implementacji Rynek komponentów nie związanych z danym dostawcą Doświadczony twórca - Craig McClanahan

Podstawowe elementy JSF

A co dostaliśmy?

Składniki JSF JSF w dużej części składa się z wtyczek: ViewHandler mechanizm odpowiedzialny za budowanie drzewa komponentów NavigationHandler machanizm dobierający wyświetlaną stronę

Składniki JSF cd. VariableResolver Mechanizm wiążący komponenty z obiektami Java PropertyResolver Mechanizm powiązany z VariableResolver StateManager Mechanizm budujący i usuwający drzewo komponentów

JSF krok po kroku

Warstwa wizualna Istnieją ViewHandler dla XUL, HTML i dla klas Java (bardzo niedojrzałe) Specyfikacja wymaga obsługi JSP jako warstwy wizualnej Obsługa JSP ma na celu przyciągnięcie szerokiej rzeczy użytkowników Java Server Pages JSP zrealizowane jako dwie biblioteki znaczników core i html

Warstwa wizualna Kontynuowanie wad JSP Skomplikowana, podatna na błędy, nielubiana ;) Nieporozumienia wynikające z filozofii JSF: JSP służy jedynie do budowy drzewa komponentów nie obsługuje danych nie-jsf w sposób przewidywalny przez początkujących Nie współpracuje z JSTL (bo wg. mnie nie powinien ) Brak podstawowych komponentów (np. prostej listy )

Warstwa wizualna - przykład <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <f:view> <h:form> <h:inputtext value="#{editor.book.title}" /> <h:commandlink actionlistener="#{editor.bookedited}" action="categoryedit"> <h:outputtext value="dodaj kategorie" /> </h:commandlink> </h:form> </f:view>

Warstwa wizualna pułapki W większości wypadków tagi JSF akceptują jedynie tagi JSF : <h:commandlink actionlistener="#{editor.bookedited}" JSF jest cudowne ;) </h:commandlink> action="categoryedit"> JSF jest cudowne ;) <a href= # onclick=... ></a>

Warstwa wizualna - pułapki <f:view> <h:form> <h:outputlabel for="name"> <h:outputtext value="name:" /> </h:outputlabel> <h:inputtext id="name" /> <h:commandbutton value="submit" /> </h:form> </f:view> Za pierwszym razem Label nie jest wyświetlony ponieważ kontrolka name nie znalazła się jeszcze w drzewie komponentów

Wiązanie komponentów z obiektami W JSF obiekty są tworzone i umieszczane w danym zakresie na żądanie JSF zawiera prosty kontener IoC, ale dzięki VariableResolver możemy wykorzystać np. Spring Komponenty mogą być związane z różnymi obiektami, znajdującymi się w różnych zakresach

JSF EL Wiązanie z danym polem obiektu: h:inputtext value="#{editor.book.title}" /> Obsługa nawigacji <h:commandlink action="#{editor.decide}"> metoda ma postać public String decide(){}

JSF EL Obsługa zdarzeń <h:commandlink actionlistener="#{editor.bookedited}"> metoda ma postać public void bookedited(actionevent event){} W kodzie łączymy się z JSF przez statyczną metodę FacesContext.getCurrentInstance()

JSF IoC <managed-bean> <managed-bean-name>menu</managed-bean-name> <managed-bean-class> pl.poznan.mmalecki.lib.controller.menu </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>categoryfactory</property-name> <value>#{categoryfactory}</value> </managed-property> </managed-bean>

Nawigacja Nawigacja jest określona przez tekstową wartość atrybutu action action= success, lub action= #{bean.method} Konfiguracja: <navigation-case> <from-outcome>bookdetails</from-outcome> <to-view-id>/book.jsp</to-view-id> </navigation-case>

Nawigacja cd. W przypadku nieistniejącego <from-outcome> ponownie wyświetlona jest strona bieżąca JSF nie umożliwia ukrycia stron JSP w WEB-INF

Zdarzenia Zdarzenia nie umożliwiają nawigowania pomiędzy stronami Jeden listener dodajemy przez atrybut actionlistener= #{} Więcej listenerów zagłębiony <f:actionlistener type= > którego atrybutem jest klasa implementująca ActionListener WADA!!! ValueChangeListener wywołany zmianą wartości pola PhaseListener wywoływany podczas wskazanego etapu przetwarzania żądania

Walidatory JSF zawiera mechanizm walidatorów, niestety jedynie server-side Przyciski i odnośniki zawierają atrybut immediate, pozwalający uniknąć walidacji (gdy wykonujemy akcję nie związaną z danymi, np. zmianę preferencji użytkownika) Brak możliwości walidacji wielu pól razem (wymaga stworzenia własnego walidatora)

Walidatory <h:inputtext id="amount" size="8" required="true" value="#{entryhandler.currententry.amount}"> <f:validatedoublerange minimum="1"/> </h:input_text> Stworzenie własnego walidatora wymaga rejestracji w konfiguracji i stworzenia nowego znacznika JSP (tld )

Konwertery Mechanizm konwerterów klas implementujących interfejs Converter Dwie metody getasobject i getasstring Konweterów nie można konfigurować przez IoC

Podsumowanie So I beg of you all, don't use JSF, boycott it, avoid it all you can. Do not let it thrive or prosper. We don't want it improved or tweaked, we want it to die the horrible painful death it so richly deserves. http://www.jroller.com/page/fate/20040920#boycott_jsf

Zalety Bajecznie prosta obsługa części z aspektów WWW zdarzenia, dowolność wiązania z obiektami, możliwość programowej manipulacji komponentami Istniejące komponenty (Oracle, MyFaces) Wizualne edytory Java Studio Creator, JDeveloper (podobno ;))

Wady Błędy w specyfikacji Niedojrzała implementacja Apache MyFaces (http://myfaces.org) Mała liczba produkcyjnych aplikacji wykorzystujących jsf

O czym nie wspomniałem? Etapy przetwarzania żądań Mechanizm komunikatów Dane tabelaryczne Umiędzynarodowienie Własne renderery Spring-JSF

Dziękuję za uwagę A kto opowiedziałby o Tapestry??