JSF 1.2 w wykonaniu NetBeans IDE 6.1 Jacek Laskowski http://www.JacekLaskowski.pl Konferencja NetBeans RoadShow Kraków (11.04.2008), Warszawa (12.04.2008) O mnie... ● ● ● ● ● ● Pasjonat Korporacyjnej Javy 5 (Java EE 5) oraz projektów otwartych Założyciel i lider Warszawa JUG Członek zespołów rozwojowych Apache Geronimo, Apache OpenEJB, Apache ServiceMix, Apache ActiveMQ Uczestnik programów NetBeans Community Acceptance Test (NetCAT) 5.0, 5.5 i 6.0 Prowadzi Notatnik Projektanta Java EE http://www.JacekLaskowski.pl Służbowo: konsultant oprogramowania w IBM Polska Konferencja JAVArsovia 2008 ● ● ● ● JAVArsovia 2008 – 2. edycja konferencji javowej organizowanej przez Warszawa JUG Kiedy: 31 maj 2008 Gdzie: Warszawa, Aula Wydziału Biologii, ul. Miecznikowa 1, Warszawa (niedaleko MIMUW) Wstęp wolny! JAVArsovia 2008 - agenda Pytania rozgrzewające ● Kto korzysta z NetBeans IDE 6? ● Regularnie, na codzień? ● Kto tworzył aplikacje webowe z JSF 1.2? ● A JSF 1.1 (+ Facelets)? ● Wicket, Tapestry? ● Struts? ● Spring MVC? ● Woodstock (Visual JSF)? ● Korzystasz z MyFaces czy JSF RI? O NetBeans 6.1... ● ● ● ● NetBeans IDE 6.1 BETA (6.03.2008) Projekt otwarty Bezpłatne narzędzie do tworzenia aplikacji z Java EE 5, Ruby, C/ C++ i in. Wsparcie (prawie) wszystkich serwerów aplikacyjnych Java EE 5 (brak Geronimo!) O JavaServer Faces (JSF) 1.2... ● ● ● ● ● Obowiązkowa część specyfikacji Java EE 5 Szkielet wspomagający konstruowanie interfejsu użytkownika aplikacji webowych Komponenty graficzne (kontrolki) Kontrola poprawności i konwersji danych z i do interfejsu użytkownika Wykonywanie akcji użytkownika po stronie serwera ● Odseparowany wygląd kontrolek ● Unified Expression Language (Unified EL) O JSF techniczniej ● faces-config.xml – serce aplikacji JSF ● Ziarna zarządzane – model aplikacji ● Rozkład kontrolek na stronie ● HTML jako standardowy widok ● Deklaratywny model nawigacyjny ● ● Mechanizm wstrzeliwania zależności (IoC/DI) dostępny w ziarnach zarządzanych Kontrolki funkcyjne vs akcyjne Konfiguracja JSF - FacesServlet <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/webapp_2_5.xsd"> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>faces/welcomeJSF.jsp</welcome-file> </welcome-file-list> </web-app> Konfiguracja JSF - faces-config.xml <?xml version='1.0' encoding='UTF-8'?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <managed-bean> <managed-bean-name>SessionBean1</managed-bean-name> <managed-bean-class>travelcenter.SessionBean1</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>/Details.jsp</from-view-id> <navigation-case> <from-outcome>main</from-outcome> <to-view-id>/Page1.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config> Konfiguracja JSF – strona JSF <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <f:view> <h1><h:outputText value="JavaServer Faces" /></h1> </f:view> </body> </html> Demo #1 – baaardzo trywialnie Prosta aplikacja JSF z pomocą NetBeans IDE 6.1 (jsf-witajswiecie) Pytanie konkursowe ● Co to jest JavaServer Faces? A) Szkielet aplikacyjny interfejsu użytkownika B) Kolejny nietrafiony pomysł prezentacji Jacka C) Coś o czym wolał(a)bym wcześniej nie słyszeć D) Nic z powyższego ● Odpowiedź: A Demo #2 – siejemy ziarna Prosta aplikacja JSF z pomocą NetBeans IDE 6.1 (jsf-witajziarno) Pytanie konkursowe ● Podaj nazwę pliku konfiguracyjny aplikacji JSF? A) faces.xml B) beans.xml C) faces-config.xml D) faces-beans.xml ● Odpowiedź: C Demo #3 – akcja! Prosta aplikacja JSF z pomocą NetBeans IDE 6.1 (jsf-witajakcjo) Pytanie konkursowe ● Jaki element aplikacji JSF stanowi jego model? A) Ziarna kawowca B) Ziarna EJB C) Ziarna springowe D) Ziarna zarządzane ● Odpowiedź: D Demo #4 – Visual JSF na scenie (Visual) JSF w NetBeans IDE 6.1 (TravelCenter) Pytanie konkursowe ● Podaj nazwę ujednoliconego języka wyrażeń w JSF 1.2? A) JSF EL B) JSP EL C) Unified EL D) Java EL ● Odpowiedź: C Demo #5 – Visual JSF na scenie 2 (Visual) JSF w NetBeans IDE 6.1 (Single Page CRUD with Table) Pytanie konkursowe ● Jak nazywa się udostępniany przez NetBeans zestaw kontrolek JSF? A) Jarocin B) Woodstock C) Brodnica D) Grudziądz ● Odpowiedź: B Demo #6 – Specjalizowane wyrysowywanie Renderer z NetBeans 6.1 i GlassFish v2 (jsf-renderer) Pytanie konkursowe ● Kto odpowiada za wyrysowywanie kontrolek w JSF? A) Model-View-Controller (MVC) B) NavigationHandler C) Renderer D) FacesServlet ● Odpowiedź: C Demo #7 – JSF i JPA z dołu do góry Utworzenie aplikacji JSF na bazie JPA (PioWeb) Pytanie konkursowe ● Czy podoba Ci się wsparcie JSF przez NetBeans 6.1? A) Tak bardzo! B) Wspaniałe! Nie mogę doczekać się, kiedy go użyję! C) Jestem oczarowany/-a! D) Tu pojawiają się ochy i echy, westchnienia, itp. ● Odpowiedź: A, B, C i potencjalnie D Podsumowanie ● ● ● ● ● Przykładowe aplikacje JSF w NetBeans IDE 6.1 3-in-1 edytor jspf 2-in-1 edytor facesconfig.xml JSF Pages from Entity Classes Visual Web JSF Library (Woodstock) I to na dziś tyle...Pytania? Słucham?