1 / 25

Introduktion til JavaServer Faces

Introduktion til JavaServer Faces. Introduktion til JavaServer Faces. Hvorfor JSF? Model-View-Controller (MVC) og Model 2 Elementerne i JSF. JavaServer Faces. JSF er en specifikation (JSR-252) fra SUN, som definerer et framework for WebApplikationer baseret på J2EE.

Download Presentation

Introduktion til JavaServer Faces

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduktion til JavaServer Faces

  2. Introduktion til JavaServer Faces • Hvorfor JSF? • Model-View-Controller (MVC) og Model 2 • Elementerne i JSF

  3. JavaServer Faces • JSF er en specifikation (JSR-252) fra SUN, som definerer et framework for WebApplikationer baseret på J2EE. • Specifikationen kan downloades fra http://www.jcp.org/en/jsr/detail?id=252 • JSF er en del af Java EE 5 & Java EE 6. • Formålet med JSF er at gøre det lettere at udvikle web applikationer, bl.a. gennem: • En veldefineret udvidelig komponentmodel • Mulighed for massiv værktøjsunderstøttelse • En eventorienteret programmeringsmodel (~Swing) • Veldefineret model for internationalisering (i18n), validering, konvertering, navigering etc. • JSF er på mange måder en videreudvikling og forbedring af Struts og er da også udviklet af den samme, nemlig Craig McClanahan. • Der findes allerede en række implementationer af JSF, bl.a. fra Sun, IBM, Oracle, Richfaces (JBoss), MyFaces, Primefaces

  4. Hvorfor JSF? • Java Web-teknologierne giver web programmøren en række stærke kort på hånden, servlets, JSP, taglibs, java beans, men der er også meget der ikke tages hånd om, fx: • navigation mellem sider (uoverskueligt, er tit fedtet ind i Java/JSP-kode) • modularisering af logik, konfiguration etc. • internationalisering (hvordan udskiftes alle tekster i applikationen på en let måde) • konvertering mellem java-objekter og http (fx mellem en række parametre og Person-objekter) • validering (hvordan udtrykkes regler, hvad er semantikken, hvordan propageres valideringsfejl til JSP-sider, redundante regler (serverside Java) og client-side (JavaScript)) • genbrug af fx valideringsregler, konverteringslogik... • håndtering af konversationel tilstand, fx værdien af en forms felter • Der er opstået en lang række løsninger – oftest baseret på model-2, som adresserer disse mangler, men de er ofte person/projekt-specifikke og af svingende kvalitet.

  5. Målet med JSF JSF specifikationen: • JavaServer Faces (JSF) is a user interface (UI) framework for Java web applications. It is designed to significantly ease the burden of writing and maintaining applications that run on a Java application server and render their UIs back to a target client. JSF provides ease-of-use in the following ways: • Makes it easy to construct a UI from a set of reusable UI components • Simplifies migration of application data to and from the UI • Helps manage UI state across server requests • Provides a simple model for wiring client-generated events to server-side application code • Allows custom UI components to be easily built and re-used • Most importantly, JSF establishes standards which are designed to be leveraged by tools to provide a developer experience which is accessible to a wide variety of developer types, ranging from corporate developers to systems programmers....

  6. Værktøjsunderstøttelse Værktøjsunderstøttelse er medtænkt i designet afJSF og der findes p.t. enrække værktøjer, somunderstøtter udviklingenaf JSF-applikationer. Her ses WSAD 5.1.2 fra IBM  Liste med komponenter JSF-komponenter Properties for den valgte komponent

  7. Web Applikations infrastruktur, evolution Brugerstyret konfiguration højt Portalsystemer, fx JSR-168 Pageflows Markup Generering, fx HTML udfra UI-komponenter Integration af UI-komponenter og Business Objekter JSF Stateful Server Side UI komponentmodel Håndtering af UI-events på serversiden Typekonvertering abstraktions-niveau Abstraheret navigation mellem sider Formhåndtering og validering Internationalization (i18n) Struts (+Tiles, Validator) Model 2-arkitektur Integreret fejlhåndtering Genbrug af skabeloner Resource management JSP Custom Tags, Basal skabelonmekanisme Integration m. Java, sessionsstyring, lifecycle, fejlhåndtering, sikkerhed, deployment, pakning, integration m. J2EE Servlets Webserver/ressourcestyring HTTP-kommunikation lavt

  8. Introduktion til JavaServer Faces • Hvorfor JSF? • Model-View-Controller (MVC) og Model 2 • Elementerne i JSF

  9. Model-2 (front controller) • The front controller handles parameters from forms • The front controller interacts with backend systems (using gateways) • The front controller selects the next view to send to the user • The gateways provide a simple facade to backendsystems • The JSP pages renders the page that is sent to the client EJB Controller Model DB Front Controller Gateways HTTP request maybe with form data JPD JMS Gatewaysmay return data May transfer data to JSP(often done with JavaBeans) ... JSP pages HTTP response with HTML page(maybe with form) Some think it is ok, if the JSP uses gateway object directly... View

  10. JSF som en Model-2-arkitektur Model faces-config .xml-fil EJB Managed Beans konfigureres Controller DB FacesServlet Gateways JPD JMS ... vælger læser Ej omfattet af JSF JSP sider m JSF-tags View

  11. Introduktion til JavaServer Faces • Hvorfor JSF? • Model-View-Controller (MVC) og Model 2 • Elementerne i JSF

  12. Overblik over elementer i JSF • Vi skal kort kigge på de forskellige elementer, der indgår i JSF-frameworket. I dette kapitel ser vi isoleret på hvert element og i næste kapitel ser vi på hvordan elementerne samarbejder. • Vi kigger på følgende elementer: • FacesServlet • web.xml • faces-config.xml • JSF-sider / JSF-tags • Property-files • Managed Beans • Navigation rules • Validators • Converters

  13. Controller: FacesServlet • FacesServlet’en er hjertet i enhver JSF-applikation og indtager rollen som Controller. • FacesServlet er implementeret i et JSF-framework af frameworkets leverandør. • Servletten konfigureres via en XML-fil og som JSF-applikationsudvikler er det sjældent, at man arbejder direkte med servletten. • Alle JSF-requests skal gå via FacesServlet, da hele JSF-infrastrukturen ellers ikke er etableret ift. det pågældende request.

  14. Registrering af Faces Servlet i web.xml • Faces Servletten skal registreres i webapplikationens deployment descriptor. • Dette gøres på vanlig vis: • Faces Servletten skal også sættes op til at modtage requests på specifikke URLs. Det kan enten gøres med prefix mapping eller extension mapping: <servlet> <servlet-name> faces-servlet-name </servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet> • <servlet-mapping> • <servlet-name> faces-servlet-name </servlet-name> • <url-pattern>/faces/*</url-pattern> <!-- Prefix mapping --> • </servlet-mapping> • <servlet-mapping> • <servlet-name> faces-servlet-name </servlet-name> • <url-pattern>*.jsf</url-pattern> <!– Extension mapping --> • </servlet-mapping>

  15. Konfigurationsfilen: faces-config.xml • FacesServlet’en konfigureres ud fra een eller flere XML-konfigurationsfiler. • Typisk benytter man blot 1 konfigurationsfil, kaldet faces-config.xml, som placeres i WEB-INF-folderen i web-applikationen. • Konfigurationsfilen er ansvarlig for at sammenkoble de fleste af delelementerne i en JSF-applikation, og den registrerer bl.a. Managed Beans, Message Bundles, Navigationsregler, validatorer, converters og factories. • Konfigurationsfiler skal overholde skemaet på http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd (version 2.0), http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd(version 1.2) eller http://java.sun.com/dtd/web-facesconfig_1_1.dtd(version 1.1). • Hvis man har behov for lidt mere fleksibilitet, kan man imidlertid registrere en context-parameter i applikationen web.xml med navnet javax.faces.CONFIG_FILES. Værdien af denne parameter kan da referere til en kommasepareret liste af ressourcer (lokation relativ til applikationens rod). Denne parameter tager præcedens over WEB-INF/faces-config.xml. • Konfigurationsfilen kan redigeres i hånden, men det er tanken, at man benytter et værktøj. • Fra JSF 2.0 kan man erstatte dele af registreringerne i faces-config.xml med annotationer i de relevante klasser (f.eks. Managed Beans, validatorer og converters).

  16. Et eksempel på faces-config.xml

  17. JSF-sider og JSF-taglibs • Til opbygning af skærmbilleder kan JSF benytte mange forskellige teknologier. • Indtil 2.0 var JSP den eneste view-teknologi som der var out-of-the-box-understøttelse for. Imidlertid viste det sig at JSPs arkitektur grundlæggende ikke var optimal for JSF, og talrige tredjepartsalternativer til JSP opstod derfor. • Den mest populære af disse, Facelets, er blevet standard view-teknologi fra JSF 2.0. • Views i JSF-web-applikationer laves typisk som JSP-sider eller Facelets som benytter JSF-tags. En JSP-side eller Facelet med JSF-tags kaldes også for en JSF-side. • JSF-tags er almindelige tag libraries, der følger med JSF-frameworket. Disse tags sørger for integrationen med JSF-frameworket. • JSF indeholder en lang række tags, som bl.a. repræsenterer brugergrænsefladekomponenter (fx alle HTML-komponenter). • JSF’s komponentmodel er udvidelig, så vi kan selv lave nye komponenter og wrappe dem i tags.

  18. Et eksempel på en JSF-side (med JSP)

  19. Property-files • JSF-har indbygget en simpel mekanisme til Internationalisering (i18n), dvs. muligheden for at ændre en applikations sprog dynamisk. • JSF benytter til dette formål alm. Java.property-files, hvor hver fil indeholder tekster på et sprog. Ved at vælge en anden fil kan sproget skiftes. • En property-fil består af key/value-par, hvor key, refereres fra applikation og value er den faktiske tekst på et givet sprog. labs/jsf/bundle/Messages.properties

  20. Managed Beans • Managed Beans (MB), er alm. Java-klasser, som registreres i faces-config.xml-filen (alternativt annoteres som @ManagedBean i JSF 2.x). • JSF styrer livscyklus for Managed Beans, dvs. at det er JSF, der instantierer MB’er, binder dem i relevante contexts og nedlægger dem igen. • JSFs UI-komponenter kan automatisk propagere data mellem Managed Beans og HTTP-request/responses. • Managed Beans kan udgøre en objektmodel af applikationens domæne. • Med EJB 3.x kan Entity Beans benyttes som Managed Beans. Hibernate-objekter kan ligeledes bruges.

  21. Navigation rules • I JSF kan alle navigationsregler placeres i faces-context.xml. • En navigationsregel beskriver hvordan en bruger kommer fra 1 side/action til en ny side.

  22. Validators • Validators er Java-klasser (evt. pakket ind i et JSF-tag), som JSF bruger til at validere data, som brugeren har indtastet. • En validator kan generere (internationaliserede) fejlbeskeder som sendes tilbage til brugeren. • Validators bruges til validering på feltniveau udfra syntaktiske regler. Validators er fx oplagte at bruge til validering af en email-adresse, et password (fx længde og kompleksitet, men ikke at 2 passwords er ens)

  23. Converters • Et grundlæggende problem i mange webapplikationer er, at konvertere mellem HTTP(HTML), som er tekstbaseret (alt er strenge) og Java-objekter. • Et eksempel er fx et HTTP-request med en parameter, date, med værdien ’2002-8-23’. I applikationen ønsker vi at repræsentere denne værdi som et java.util.Date-objekt og har derfor brug for en metode til at konvertere fra streng-form til objekt-form. Tilsvarende har vi brug for at konvertere fra objekt-form til streng-form, når der skal genereres et response til brugeren. • Converters i JSF er klasser, der implementerer javax.faces.convert.Converter-interfacet og indeholder logik til at konvertere mellem objekter og strenge.

  24. Andre JSF-begreber • Der er en del JSF-begreber vi ikke har dækket i det foregående: • Renderers og RenderKits • ViewHandlers • NavigationHandlers • StateManager • Resolvers • Events, Actions og Listeners • Faser • Vi kigger på en del af disse begreber i løbet af kurset.

  25. Web-ressourcer om JSF • JSF hos Oraclehttp://javaserverfaces.java.net/ • JSF Centralhttp://www.jsfcentral.com • JSF Tutorialshttp://www.jsftutorials.net • Gode ressourcer om Java og Java EEhttp://www.theserverside.com

More Related