13/07/2015 JSF Java Server Faces Master 2 Pro GLR TER David Mihura Eric Le Merdy
JSF – Le Merdy Eric – Mihura David 13/07/ Plan Problématique Bref Historique Solution JSF Principes Mise en Œuvre des principes Quelques outils Bilan Conclusion
JSF – Le Merdy Eric – Mihura David 13/07/ Problématique Evolutions des besoins : Applications Web Problème : Comment concevoir une application Web de la même façon qu'une application traditionnelle Plusieurs solutions existent : WebForms : Microsoft Struts : Apache JSF : Sun
JSF – Le Merdy Eric – Mihura David 13/07/ Bref Historique Divergences d'approche selon les éditeurs. Plus grande séparation des concepts. SunOpen-sourceMicrosoft ServletPHP,PERL,etc…ASP 1998JSP MVC ASP.NET, WebForms 2000Struts 2004JSF
13/07/2015JSF – Le Merdy Eric – Mihura David 5 Solution JSF Framework de création d’interfaces graphiques pour les applications Web
JSF – Le Merdy Eric – Mihura David 13/07/ Un concept en évolution Demande de spécification en Mai 2001 Plusieurs versions de spécifications Sun Final : 1.0 (début 2004) Maintenance : 1.1 (fin 2004) Plusieurs implémentations Référence (Sun) compatible 1.1 MyFaces (Apache) Ecruiser compatible 1.1 Une version 1.2 est en cours
JSF – Le Merdy Eric – Mihura David 13/07/ JSF et MVC Modèle : Couplé à JSF par un Bean géré. Vue : JSP + balises JSF Contrôleur : Servlet (FaceServlet) Règles définies dans un fichier xml
13/07/2015JSF – Le Merdy Eric – Mihura David 8 Principes
JSF – Le Merdy Eric – Mihura David 13/07/ Principes : composants graphiques Fonctionnalité du composant définie dans la classe du composant Plusieurs rendus pour un même composant Possibilité de définir des rendus EtiquetteRendu h:command_button h:command_linkhyperlink
JSF – Le Merdy Eric – Mihura David 13/07/ Principe : gérer des événements Chaque composant génère des événements (Events) Le serveur possède des écouteurs (Listeners) qui traitent les événements
JSF – Le Merdy Eric – Mihura David 13/07/ Principes : gestion de l’état des composants L’état peut changer chez le client entre 2 requêtes JSF prend en charge la gestion de cet état
JSF – Le Merdy Eric – Mihura David 13/07/ Exemple d’événements AccepterX EVENEMENT value_changed Gérer événement Changement état action Enregistrement formulaire
JSF – Le Merdy Eric – Mihura David 13/07/ Principes : validation et conversion Validation : Agit sur les composants graphiques (textfield) Personnalisation des validateurs (bornes, types, etc.) Lève des erreurs Conversion : Formatage des données Ex : → 15,000 Personnalisation possible
JSF – Le Merdy Eric – Mihura David 13/07/ Principes : navigation des pages Définitions de l’enchaînement des pages par un ensemble de règles de navigation
JSF – Le Merdy Eric – Mihura David 13/07/ Principes : internationalisation Possibilité de définir des locales Correspondance clé → valeur internationalisée useridLabel=Nom de l'Utilisateur passwordLabel=Mot de Passe loginSubmitLabel=Connectez useridLabel=Userid passwordLabel=Password loginSubmitLabel=Login
JSF – Le Merdy Eric – Mihura David 13/07/ Principes : balises JSF Rappels JSP: Page html qui peut contenir du code Java A l’exécution cette page est convertie en servlet Contient des balises JSP JSTL ( bibliothèque de balises standard pour java) JSF propose une bibliothèque de balises
13/07/2015JSF – Le Merdy Eric – Mihura David 17 Mise en Œuvre des principes
JSF – Le Merdy Eric – Mihura David 13/07/ Etude de cas Une page de login Un seul utilisateur valide 3 pages : Authentification Accueil (si réussie) Erreur (sinon)
JSF – Le Merdy Eric – Mihura David 13/07/ Le bean du support Dans un package jsfLogin
JSF – Le Merdy Eric – Mihura David 13/07/ Déclaration du bean dans face-config.xml LoginServer jsflogin.loginServer session
JSF – Le Merdy Eric – Mihura David 13/07/ Création des pages Import des librairies Ressources (internationalisation) Utilisation des balises
JSF – Le Merdy Eric – Mihura David 13/07/ Navigation des pages face-config.xml /login.jsp Handle case for successful login #{LoginServer.loginAction} success /success.jsp Handle case for unsuccessful login #{LoginServer.loginAction} failure /failure.jsp /success.jsp return /login.jsp return success failure /login.jsp /failure.jsp /success.jsp
13/07/2015JSF – Le Merdy Eric – Mihura David 23 Quelques outils Java Studio Creator Plugin Eclipse : JSF Studio D’autres outils
JSF – Le Merdy Eric – Mihura David 13/07/ Java Studio Creator (1/3) Produit Sun Licence propriétaire IDE complet Serveur J2EE intégré Basé sur NetBeans Développement « à la souris »
JSF – Le Merdy Eric – Mihura David 13/07/ Java Studio Creator (2/3) Points forts Développement rapide Tout est intégré Points faibles Moins de maîtrise sur le code généré Entièrement Sun (forte dépendance) Produit jeune Manque de robustesse
JSF – Le Merdy Eric – Mihura David 13/07/ Java Studio Creator (3/3)
JSF – Le Merdy Eric – Mihura David 13/07/ Eclipse : JSF Studio (1/3) Plug-in propriétaire pour Eclipse Gère plusieurs serveurs d’application (Tomcat, JBoss, etc …) Perspective JSF Template de projets Editeur graphique pour le face-config Edition assistée de code JSP
JSF – Le Merdy Eric – Mihura David 13/07/ Eclipse : JSF Studio (2/3) Points forts: Puissance d’Eclipse Editeur JSP complet Indépendant du serveur Point faible Manque de performance
JSF – Le Merdy Eric – Mihura David 13/07/ Eclipse : JSF Studio (3/3)
JSF – Le Merdy Eric – Mihura David 13/07/ D’autres outils JSF MyEclipse WebFaces Faces console Standalone JDeveloper JBuilder NetBeans Eclipse
13/07/2015JSF – Le Merdy Eric – Mihura David 31 Bilan JSF vs Struts Attentes respectées ?
JSF – Le Merdy Eric – Mihura David 13/07/ JSF vs Struts (1/3) Rappels Struts : Framework d’application Web Licence Apache Mêmes principes (MVC,fichier de navigation) Pas de spécifications formalisées
JSF – Le Merdy Eric – Mihura David 13/07/ JSF vs Struts (2/3) Struts est plus mature Meilleur facteur de confiance pour JSF (Ex: support IBM pour WebSphere) Struts contraint le modèle, JSF est plus flexible
JSF – Le Merdy Eric – Mihura David 13/07/ JSF vs Struts (3/3) La vue est plus générique dans JSF grâce à sa conception des composants JSF est plus extensible Balises personnalisés Composants personnalisés Conclusion : JSF a su tirer expérience de Struts
JSF – Le Merdy Eric – Mihura David 13/07/ Attentes respectées (1/2) JSF est-il une bonne solution ? Standardisé Règles de navigation Mise en œuvre des composants graphiques Approche RAD
JSF – Le Merdy Eric – Mihura David 13/07/ Attentes respectées (2/2) MVC Modèle indépendant Séparation du comportement et du rendu Approche page du contrôleur : spécifique aux applications Web
13/07/2015JSF – Le Merdy Eric – Mihura David 37 Conclusion
JSF – Le Merdy Eric – Mihura David 13/07/ Le futur de ce Framework Intégration de JSF 1.2 à la future spécification J2EE 5.0 Participation de l’industrie à la spécification Pas de conversion Struts → JSF Adoption de JSF pour les nouveaux projets