Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

1 JavaServer Faces Copyright © Lund & Bendsen Introduktion til JavaServer Faces.

Lignende præsentationer


Præsentationer af emnet: "1 JavaServer Faces Copyright © Lund & Bendsen Introduktion til JavaServer Faces."— Præsentationens transcript:

1 1 JavaServer Faces Copyright © Lund & Bendsen Introduktion til JavaServer Faces

2 2 JavaServer Faces Copyright © Lund & Bendsen Hvorfor JSF? Model-View-Controller (MVC) og Model 2 Elementerne i JSF Introduktion til JavaServer Faces

3 3 JavaServer Faces Copyright © Lund & Bendsen 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 4 JavaServer Faces Copyright © Lund & Bendsen 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 5 JavaServer Faces Copyright © Lund & Bendsen Målet med JSF 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.... JSF specifikationen:

6 6 JavaServer Faces Copyright © Lund & Bendsen Værktøjsunderstøttelse JSF-komponenter Properties for den valgte komponent Liste med komponenter Værktøjsunderstøttelse er medtænkt i designet af JSF og der findes p.t. en række værktøjer, som understøtter udviklingen af JSF-applikationer. Her ses WSAD 5.1.2 fra IBM 

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

8 8 JavaServer Faces Copyright © Lund & Bendsen Hvorfor JSF? Model-View-Controller (MVC) og Model 2 Elementerne i JSF Introduktion til JavaServer Faces

9 9 JavaServer Faces Copyright © Lund & Bendsen Model-2 (front controller) May transfer data to JSP (often done with JavaBeans) EJB Gateways may return data JSP pages DB JPD JMS... Gateways HTTP response with HTML page (maybe with form) HTTP request maybe with form data Front Controller Some think it is ok, if the JSP uses gateway object directly... ControllerModel View 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

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

11 11 JavaServer Faces Copyright © Lund & Bendsen Hvorfor JSF? Model-View-Controller (MVC) og Model 2 Elementerne i JSF Introduktion til JavaServer Faces

12 12 JavaServer Faces Copyright © Lund & Bendsen 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 13 JavaServer Faces Copyright © Lund & Bendsen 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 14 JavaServer Faces Copyright © Lund & Bendsen 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: faces-servlet-name javax.faces.webapp.FacesServlet faces-servlet-name javax.faces.webapp.FacesServlet faces-servlet-name /faces/* faces-servlet-name /faces/* faces-servlet-name *.jsf faces-servlet-name *.jsf

15 15 JavaServer Faces Copyright © Lund & Bendsen 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 16 JavaServer Faces Copyright © Lund & Bendsen Et eksempel på faces-config.xml

17 17 JavaServer Faces Copyright © Lund & Bendsen 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 18 JavaServer Faces Copyright © Lund & Bendsen Et eksempel på en JSF-side (med JSP)

19 19 JavaServer Faces Copyright © Lund & Bendsen 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 20 JavaServer Faces Copyright © Lund & Bendsen 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 21 JavaServer Faces Copyright © Lund & Bendsen 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 22 JavaServer Faces Copyright © Lund & Bendsen 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 23 JavaServer Faces Copyright © Lund & Bendsen 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 24 JavaServer Faces Copyright © Lund & Bendsen 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 25 JavaServer Faces Copyright © Lund & Bendsen Web-ressourcer om JSF JSF hos Oracle http://javaserverfaces.java.net/ JSF Central http://www.jsfcentral.com JSF Tutorials http://www.jsftutorials.net Gode ressourcer om Java og Java EE http://www.theserverside.com


Download ppt "1 JavaServer Faces Copyright © Lund & Bendsen Introduktion til JavaServer Faces."

Lignende præsentationer


Annoncer fra Google