Computers">
Jee7 2 JSF
Jee7 2 JSF
Jee7 2 JSF
JavaServer Faces
Plan
Introduction JSF
FacesServlet et faces-config.xml
Pages et composants web
Moteurs de rendu
Convertisseurs et validateurs
Backing bean et navigation
Interface web
Historique
Jsp 2.2 EL 2.2 et JSTL 1.2
Nouveauts de JSF 2.0, JSF 2.2
Exemple dApplication web
1
JSF : Rappel
WWW (World Wide Web) a t, initialement conu pour partager des
documents crits en HTML (hypertext Markup Language).
JSF : Rappel
Or une JSP nest dautre quune servlet crite essentiellement en HTML
avec un peu de java pour effectuer les traitements.
2
Introduction JSF
Les applications JSF sont des applications web classiques qui
interceptent HTTP via la servlet Faces et produisent du HTML.
Introduction JSF
La figure ci-aprs reprsente les parties importantes de larchitecture
JSF qui est riche et souple :
3
Introduction JSF
Larchitecture JSF est forme des parties importantes suivantes :
FacesSevlet et faces-config.xml : FacesServlet est la sevlet principale de
lapplication et peut ventuellement tre configure par un fichier descripteur
faces-config.xml.
Pages et composants :JSF permet dutiliser plusieurs PDL (Presentation
Description Language), comme JSP ou Facelets.
Moteurs de rendu (renderer) : ils sont responsables de laffichage dun
composant et de la traduction de la valeur saisie par lutilisateur en valeur pour le
composant.
Convertisseurs : ils effectuent les conversions entre les valeurs de composants
(Date, boolean, etc.) et les valeurs de marqueurs (String), et rciproquement.
Validateurs : ils garantissent que la valeur saisie par lutilisateur soit correcte.
Backing bean et navigation : la logique mtier seffectue dans des backing
beans (managed bean en JEE6) qui contrlent aussi la navigation entre les pages.
Support dAjax : JSF reconnait nativement Ajax.
2015/2016 Java Entreprise Edition 7 7
FacesServlet et faces-config.xml
JSF utilise le patron de conception MVC (Modle-Vue-Contrleur) comme la
plupart des frameworks.
MVC permet de dcouper la vue (la page) et le modle (les donnes affiches
dans la vue). Le contrleur prend en charge les actions de lutilisateur qui
pourraient impliquer des modifications dans le modle et dans les vues. En
JSF, ce contrleur est la servlet FacesServlet.
Toutes les requtes de lutilisateur passent par cette servlet, qui les examine et
appelle les diffrentes actions correspondantes du modle en utilisant les
backing beans.
4
Pages et composants
Un framework doit envoyer une page sur le dispositif de sortie du client
(navigateur) et exige donc une technologie daffichage appele PDL
(langage de dclaration de page).
Une application JSF peut utiliser plusieurs technologies pour son PDL,
comme JSP ou Facelets. Le PDL par dfaut des versions JSF 1.2 et avant
tait JSP. partir de JSF 2.0 prfre Facelets.
JSP et Facelets sont tous les deux forms dune arborescence de
composants (widgets ou contrles) fournissant des fonctionnalits
spcifiques pour interagir avec lutilisateur(champ de saisie, boutons,).
JSF dispose dun ensemble standard de composants et permets de crer
facilement nos composants.
Pour grer larborescence de composants, une page passe par un cycle de
vie complexe (initialisation, vnements, affichage, etc.)
5
Pages et composants
Les marqueurs JSF : xmlns:h="http://xmlns.jcp.org/jsf/html"
affiche un formulaire avec des champs de saisie (lISBN et le titre dun
livre) et un bouton.
6
Convertisseurs et validateurs
Une fois la page est affiche, lutilisateur peut sen servir pour entrer des
donnes.
Comme il n y a pas de contraintes sur les types, un moteur de rendu ne peut
pas prvoir laffichage de lobjet.
Cest pourquoi les convertisseurs existent : ils traduisent un objet (Integer,
Date, Enum, Boolean, ) en chaine afin quil puisse safficher et inversement,
construisent un objet partir dune chaine qui a t saisie.
JSF fournit un ensemble de convertisseurs pour les types classiques dans le
paquetage javax.faces.convert. On peut aussi dvelopper les notre.
Les donnes doivent tre valides avant dtre traites par le back-end : cest
le rle de validateurs.
un composant est associ un ou plusieurs validateurs qui garantissent que
les donnes saisies soient correctes.
JSF fournit quelques validateurs (LengthValidator, RegexValidator, etc.) et on
peut crer nos propres validateurs avec les annotations.
2015/2016 Java Entreprise Edition 7 13
7
Backing Bean et navigation
<h:commandButton value="Create"
action="#{bookController.doCreateBook}"/> :
associe un bouton de soumission de formulaire une action : lorsquon aura
cliqu sur ce bouton, celui-ci dclenchera un vnement sur le backing bean,
qui va excuter une mthode couteur ici doCreateBook().
@Named //@ManagedBean ds JEE6
@RequestScoped
BookController est une classe
annote @Named et possde une
public class BookController {
proprit book synchronis avec
@Injected //@EJB ds JEE6
la valeur du composant de la
private BookEJB bookEJB;
page.
private Book book = new Book(); La mthode doCreateBook()
public String doCreateBook() { invoque un EJB sans tat et
book= bookEJB.createBook(book); renvoie une chaine permettant de
return "listBooks.xhtml"; naviguer entre les pages.
}
// getters, setters
} 2015/2016 Java Entreprise Edition 7 15
Support dajax
La vesion JSF 2.2 supporte Ajax sous forme dune bibliothque
JavaScript (jsf.js) dfinie dans la spcification et une balise <f:ajax>.
8
Interface web : histoire
Au dbut du web, les pages taient statiques.
Augmentation de lactivit commerciale sur le web, force fournir un contenu
dynamique.
CGI (Common Gateway Interface) avec HTML et des scripts CGI crits dans
diffrents langages tait la premire solution fournir un contenu dynamique.
Cette solution avec les CGIs est de trop bas niveau
Netscape avait cr JavaScript sexcutant dans les navigateurs et permet de
crer un contenu dynamique mais incompatible avec tous les navigateurs.
Les servlets taient une alternative aux scripts CGI avec des bibliothques de
plus haut niveau.
JSP sont considres comme une amlioration du modle servlets mais les
JSP mlangeaient du java avec HTML.
Depuis plusieurs framewoks ont vu le jour : struts, tapestry, Wicket, pour
combler les lacunes prcdentes.
9
JSF 2.0 : JSP 2.2, EL 2.2 et JSTL 1.2
Les JSP sont une abstraction de haut niveau des servlets
JSF 2.0
JSF 2.0 est une volution de JSF 1.2 et les facelets sont prfres aux JSP.
Parmi les ajouts de JSF 2.0 :
Une autre technologie de prsentation que JSP, reposant sur Facelets;
Un nouveau mcanismes de gestion des ressources (pour les images, les
scripts JavaScript,);
Des portes supplmentaires (porte vue et porte de composant);
Le dveloppement est plus simple grce aux annotations pour les backing
beans, les moteurs de rendu, les convertisseurs, les validateurs,
La rduction de la configuration XML en exploitant les annotations et la
configuration par exception (faces-config.xml est facultatif);
Le support dajax
Le dveloppement de composant facilit
Mojarra (famille de poisson), est limplmentation de rfrence open-source
de JSF2.0
10
JSF 2.2 : nouveauts
JSF 2.2 est une volution de JSF 2.0 .
Parmi les ajouts de JSF 2.2 :
La possibilit d'crire la vue en HTML pur, mais JSF peut ajouter toutes les
fonctionnalits supplmentaires en arrire plan.
HTML5 nous permet d'utiliser un attribut id pour chaque type d'lment
Faces flow : amlioration majeure en JSF2.2. On utilise une srie d'crans
tels que les assistants, les multi-crans, rservations, etc.
Contrle de la file d'attente pour les requtes AJAX: Si plusieurs requtes
arrivent, seule la plus rcente est envoye au serveur.
Injection dans tous les artefacts de JSF: Dans JSF 2.2 linjection est possible
partout (convertisseurs, validateurs, composants, etc.)
aller vers les CDI (context and dependency injection): Avec JSF 2.2, les CDI
ont remplacs les anciens beans grs JSF et supportent aussi les portes
(javax.faces.bean deviendra est obsolte).
11
JSF 2.2 : application CD-Bookstore
La figure ci-joint montre linteraction des composants de cette
application. Lapplication est assemble sous un fichier war et utilise
une bases de donnes Derby.
12
JSF 2.2 : application CD-Bookstore
Book : lentit Book doit tre associe un fichier persistence.xml.
@Entity
@NamedQuery(name = "findAllBooks", query = "SELECT b FROM Book b")
public class Book {
@Id @GeneratedValue
private Long id;
@Column(nullable = false)
private String title;
private Float price;
@Column(length = 2000)
private String description;
private String isbn;
private Integer nbOfPage;
private Boolean illustrations;
// constructeurs, getters, setters
}
2015/2016 Java Entreprise Edition 7 25
13
JSF 2.2 : application CD-Bookstore
BookController : un backing bean qui consiste interagir avec les autres
couches de lapplication (couche EJB) ou effectuer des validations.
Lannotation @RequestScoped dfinit la dure de vie du bean (ici il vivra le
temps de la requte).
Le bean contient deux attributs qui seront utiliss par les pages :
bookList : est la liste des livres rcuprs partir de la base de donnes, qui
doit safficher dans la page listBooks.xhtml
book : est lobjet qui sera associ au formulaire (dans la page
newBook.xhtml) et rendu persistant.
Tout le traitement mtier (cration et rcupration des livres) seffectue via
BookEJB. Le backing Bean obtient une rfrence lEJB par injection, via
lannotation @Injected et dispose de deux mthodes qui seront invoques par
les pages : doNew() : permet de naviguer vers newBook.xhtml
14
JSF 2.2 : application CD-Bookstore
La page newBook.html est un formulaire permettant lutilisateur de
saisir les informations ncessaires la cration dun livre (ISBN, titre,
prix, description, nombre de pages et illustrations).
15
JSF 2.2 : application CD-Bookstore
La page utilise dautres composants graphiques :
<h:form> permet de crer un formulaire dont les valeurs seront
envoyes au serveur lorsquil sera soumis.
<h:outputLabel> affiche un label partir dune chaine fixe (comme
value=" ISBN : " ) ou en liant un bean la proprit.
<h:inputTextarea> affiche une zone de texte et lie sa valeur lattribut
description du livre
<h:selectBooleanCheckbox> affiche une case cocher et la lie
lattribut illustrations (un Boolean).
<h:commandButton> affiche un bouton de soumission de formulaire
qui, lorsquon cliquera dessus, invoquera la mthode doCreateBook()
du backing bean (action= "#{bookController.doCreateBook}" ).
16
JSF 2.2 : application CD-Bookstore
Chaque colonne du tableau est dfinie par un lment <h:column>
<h:commandLink > cre un lien, si on clique dessus, appelle doNew()
du backing bean (celle-ci permet de revenir la page newBook.xhtml).
17
JSF 2.2 : application CD-Bookstore
Pour compiler : ouvrir une fentre dos dans le rpertoire contenant pom.xml
et tapez : mvn package
Cette commande cre le fichier chapter10-1.0.war dans le rpertoire cible.
Ce fichier contient lentit Book, le bean BookEJB, le backing bean
BookController, les deux descripteurs (persistence.xml et web.xml) et les
deux pages web (newBook.xhtml et listBooks.xhtml).
Dploiement dans GlassFish 4 :
vrifiez que la base Derby sexcute et coute sur son port par dfaut,
ouvrez une fentre dos, placez vous dans le rpertoire target contenant le
fichier chapter10-1.0.war et entrez la commande :
asadmin deploy chapter10-1.0.war
Si le dploiement russit, la commande suivante devrait renvoyer le nom et
le type de lapplication. Ici on a deux type web et ejb.
asadmin list-components
chapter10-1.0 <ejb, web>
2015/2016 Java Entreprise Edition 7 35
18
JSF 2.2 : application CD-Bookstore
19