250 likes | 378 Views
Javaserver Faces Première approche. Evolution des technologies web Servlets JSP MVC Model 1 : servlets + JSP MVC Model 2 : un seule servlet + JSP Java Server Faces. JSF, c'est quoi ?. Framework qui facilite et standardise le développement d'applications web
E N D
Javaserver FacesPremière approche • Evolution des technologies web • Servlets • JSP • MVC Model 1 : servlets + JSP • MVC Model 2 : un seule servlet + JSP • Java Server Faces
JSF, c'est quoi ? • Framework qui facilite et standardise le développement d'applications web • S'appuie sur les technologies qui l'ont précédé • Peut être mis en oeuvre par des outils pour permettre un développement de type RAD • Java Studio Creator - Sun • WSAD - IBM • JBuilder Borland • JDevelopper - Oracle
JSF, c'est quoi ? • Peut être codé à la main, l'utilisation d'un outil est fortement recommandée • Technologie côté serveur orientée interface utilisateur • Sépare clairement la partie « interface » de la partie « métier » • Version 1.0 de Java Server Faces: JSR-127 validée en mars 2004 • http://java.sun.com/j2ee/javaserverfaces/
JSF va plus loin • Assemblage de composants serveur qui génèrent le code de leur rendu • Possibilité d'associer certains composants à une source de données encapsulée dans un bean • Utilisation d'événements et de listener • Conversion et validation des données avant leur utilisation dans les traitements
JSF va plus loin • Possibilité d'étendre les différents modèles et de créer ses propres composants • Configuration de la navigation entre les pages • Support de l'internationalisation • Support pour l'utilisation par des outils graphiques
JSF se compose: • d'une spécification qui définit le mode de fonctionnement du framework • d'une API : l'ensemble des classes de l'API est contenu dans les packages javax.faces • d'une implémentation de référence • de bibliothèques de tags personnalisés fournies par l'implémentation pour • utiliser les composants dans les JSP • gérer les événements • valider les données saisies
Cycle de vie d'une requête • Création de l'arbre de composants • Extraction des données des différents composants de la page • Conversion et validation des données • Extraction des données validées et mise à jour du modèle de données (javabean) • Traitements des événements liés à la page • Génération du rendu de la réponse
Configuration d'une application • La structure est celle d'une application j2ee / /WEB-INF /WEB-INF/web.xml /WEB-INF/lib /WEB-INF/classes
Les bibliothèques nécessaires jsf-api.jar jsf-ri.jar jstl.jar standard.jar common-beanutils.jar commons-digester.jar commons-collections.jar commons-logging.jar
Configuration: faces-config.xml • Ce fichier est au même niveau que web.xml • Il peut aussi être découpé en plusieurs fichiers différents • Dans ce cas:
Support des fichiers de ressource pour l'internationalisation
EL: le langage d'expression • La liaison des données entre le backing bean et la page s'effectue au moyen d'expressions: <h:inputText value="#{login.nom}"/> <h:inputText value="#{login["nom"]}"/> <h:inputText value="#{login.['nom']}"/> <h:outputText value="#{messages.salutation}, #{utilisateur.nom}!"/>
Composants graphiques JSF propose : • un ensemble de classes qui gèrent le comportement et l'état d'un composant • un modèle pour assurer le rendu du composant pour un type d'application (par exemple HTML) • un modèle de gestion des événements émis par le composant reposant sur le modèle des listeners • la possibilité d'associer un composant de conversion ou de validation des données
Les modèles de rendu • L'implémentation de référence propose un seul modèle de rendu (HTML) • Il est possible d'associer plusieurs modèles de rendu • L'association entre un composant et son modèle de rendu est réalisée dans un RenderKit • Par exemple, un objet de type UISelectOne peut être rendu par • un ensemble de bouton radio • une liste • une liste déroulante
Utilisation dans une jsp • Utiliser une directive taglib: <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> • Tag view à la racine: