JSF
description
Transcript of JSF
20/04/23
JSF
Java Server Faces
Master 2 Pro GLRTER
David MihuraEric Le Merdy
JSF – Le Merdy Eric – Mihura David20/04/23 2
Plan
Problématique Bref Historique Solution JSF
Principes Mise en Œuvre des principes
Quelques outils Bilan Conclusion
JSF – Le Merdy Eric – Mihura David20/04/23 3
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 David20/04/23 4
Bref Historique
Divergences d'approche selon les éditeurs. Plus grande séparation des concepts.
Sun Open-source Microsoft
19961997
Servlet PHP,PERL,etc… ASP
1998 JSP
MVC
ASP.NET, WebForms
2000 Struts
2004 JSF
20/04/23 JSF – Le Merdy Eric – Mihura David 5
Solution JSF
Framework de création d’interfaces graphiques pour les applications Web
JSF – Le Merdy Eric – Mihura David20/04/23 6
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 David20/04/23 7
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
20/04/23 JSF – Le Merdy Eric – Mihura David 8
Principes
JSF – Le Merdy Eric – Mihura David20/04/23 9
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
Etiquette Rendu
h:command_button
h:command_link hyperlink
JSF – Le Merdy Eric – Mihura David20/04/23 10
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 David20/04/23 11
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 David20/04/23 12
Exemple d’événements
AccepterX EVENEMENT
value_changed
Gérer
événement
Changement état
action
Enregistrement formulaire
JSF – Le Merdy Eric – Mihura David20/04/23 13
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éesEx : 15000 → 15,000Personnalisation possible
JSF – Le Merdy Eric – Mihura David20/04/23 14
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 David20/04/23 15
Principes : internationalisation
Possibilité de définir des locales Correspondance
clé → valeur internationalisée
useridLabel=Nom de l'UtilisateurpasswordLabel=Mot de PasseloginSubmitLabel=Connectez
useridLabel=UseridpasswordLabel=PasswordloginSubmitLabel=Login
JSF – Le Merdy Eric – Mihura David20/04/23 16
Principes : balises JSF
Rappels JSP:Page html qui peut contenir du code JavaA l’exécution cette page est convertie en
servletContient des balises JSP
JSTL ( bibliothèque de balises standard pour java)
JSF propose une bibliothèque de balises
20/04/23 JSF – Le Merdy Eric – Mihura David 17
Mise en Œuvre des principes
JSF – Le Merdy Eric – Mihura David20/04/23 18
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 David20/04/23 19
1. Le bean du support
Dans un package jsfLogin
JSF – Le Merdy Eric – Mihura David20/04/23 20
2. Déclaration du bean dansface-config.xml
<managed-bean> <managed-bean-name>LoginServer</managed-bean-name> <managed-bean-class>jsflogin.loginServer</managed-bean-class> <managed-bean-scope>session</managed-bean-scope></managed-bean>
JSF – Le Merdy Eric – Mihura David20/04/23 21
3. Création des pages<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
Import des librairies
Ressources (internationalisation)
Utilisation des balises
<f:loadBundle basename="jsflogin.Resources" var="jsfloginBundle"/>
<h:form id="loginForm">
<h:input_text id="userid" required="true" value="#{LoginServer.userid}" >
<f:validate_length minimum="4" maximum="7" />
</h:input_text>
<h:command_button id="submit" action="#{LoginServer.loginAction}"
value="#{jsfloginBundle.loginSubmitLabel}"/>
</h:form>
JSF – Le Merdy Eric – Mihura David20/04/23 22
4. Navigation des pagesface-config.xml
<navigation-rule> <from-view-id>/login.jsp</from-view-id> <navigation-case> <description>Handle case for successful login</description> <from-action>#{LoginServer.loginAction}</from-action> <from-outcome>success</from-outcome> <to-view-id>/success.jsp</to-view-id> </navigation-case> <navigation-case> <description>Handle case for unsuccessful login</description> <from-action>#{LoginServer.loginAction}</from-action> <from-outcome>failure</from-outcome> <to-view-id>/failure.jsp</to-view-id> </navigation-case></navigation-rule><navigation-rule> <from-view-id>/success.jsp</from-view-id> <navigation-case> <from-outcome>return</from-outcome> <to-view-id>/login.jsp</to-view-id> </navigation-case></navigation-rule>
return
success
failure
/login.jsp
/failure.jsp
/success.jsp
20/04/23 JSF – Le Merdy Eric – Mihura David 23
Quelques outils
Java Studio CreatorPlugin Eclipse : JSF StudioD’autres outils
JSF – Le Merdy Eric – Mihura David20/04/23 24
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 David20/04/23 25
Java Studio Creator (2/3)
Points fortsDéveloppement rapideTout est intégré
Points faiblesMoins 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 David20/04/23 26
Java Studio Creator (3/3)
JSF – Le Merdy Eric – Mihura David20/04/23 27
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 David20/04/23 28
Eclipse : JSF Studio (2/3)
Points forts:Puissance d’EclipseEditeur JSP complet Indépendant du serveur
Point faibleManque de performance
JSF – Le Merdy Eric – Mihura David20/04/23 29
Eclipse : JSF Studio (3/3)
JSF – Le Merdy Eric – Mihura David20/04/23 30
D’autres outils JSF
MyEclipse WebFaces Faces console
Standalone JDeveloper JBuilder NetBeans Eclipse
20/04/23 JSF – Le Merdy Eric – Mihura David 31
Bilan
JSF vs StrutsAttentes respectées ?
JSF – Le Merdy Eric – Mihura David20/04/23 32
JSF vs Struts (1/3)
Rappels Struts :Framework d’application WebLicence ApacheMêmes principes (MVC,fichier de navigation)Pas de spécifications formalisées
JSF – Le Merdy Eric – Mihura David20/04/23 33
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 David20/04/23 34
JSF vs Struts (3/3)
La vue est plus générique dans JSF grâce à sa conception des composants
JSF est plus extensibleBalises personnalisésComposants personnalisés
Conclusion :JSF a su tirer expérience de Struts
JSF – Le Merdy Eric – Mihura David20/04/23 35
Attentes respectées (1/2)
JSF est-il une bonne solution ?StandardiséRègles de navigationMise en œuvre des composants graphiques
Approche RAD
JSF – Le Merdy Eric – Mihura David20/04/23 36
Attentes respectées (2/2)
MVCModèle indépendantSéparation du comportement et du renduApproche page du contrôleur : spécifique aux
applications Web
20/04/23 JSF – Le Merdy Eric – Mihura David 37
Conclusion
JSF – Le Merdy Eric – Mihura David20/04/23 38
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