LeMerdy-Mihura-JSF

publicité
David Mihura
Eric Le Merdy
JSF
Java Server Faces
Master 2 Pro GLR
TER
21/04/2017
Plan



Problématique
Bref Historique
Solution JSF
 Principes
 Mise



en Œuvre des principes
Quelques outils
Bilan
Conclusion
21/04/2017
JSF – Le Merdy Eric – Mihura David
2
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
21/04/2017
JSF – Le Merdy Eric – Mihura David
3
Bref Historique
Sun
Open-source
Microsoft
1996
1997
Servlet PHP,PERL,etc… ASP
1998
JSP
MVC
ASP.NET, WebForms
2000
2004


21/04/2017
Struts
JSF
Divergences d'approche selon les éditeurs.
Plus grande séparation des concepts.
JSF – Le Merdy Eric – Mihura David
4
Solution JSF
Framework de création
d’interfaces graphiques pour
les applications Web
21/04/2017
JSF – Le Merdy Eric – Mihura David
5
Un concept en évolution


Demande de spécification en Mai 2001
Plusieurs versions de spécifications Sun



Plusieurs implémentations




Final : 1.0 (début 2004)
Maintenance : 1.1 (fin 2004)
Référence (Sun) compatible 1.1
MyFaces (Apache)
Ecruiser compatible 1.1
Une version 1.2 est en cours
21/04/2017
JSF – Le Merdy Eric – Mihura David
6
JSF et MVC

Modèle :
 Couplé

Vue :
 JSP

à JSF par un Bean géré.
+ balises JSF
Contrôleur :
 Servlet
(FaceServlet)
 Règles définies dans un fichier xml
21/04/2017
JSF – Le Merdy Eric – Mihura David
7
Principes
21/04/2017
JSF – Le Merdy Eric – Mihura David
8
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
21/04/2017
Etiquette
Rendu
h:command_button
h:command_link
JSF – Le Merdy Eric – Mihura David
hyperlink
9
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

21/04/2017
JSF – Le Merdy Eric – Mihura David
10
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

21/04/2017
JSF – Le Merdy Eric – Mihura David
11
Exemple d’événements
Gérer
X Accepter
EVENEMENT
événement
value_changed
action
Changement
Enregistrement
état
formulaire
21/04/2017
JSF – Le Merdy Eric – Mihura David
12
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 : 15000 → 15,000
 Personnalisation possible
21/04/2017
JSF – Le Merdy Eric – Mihura David
13
Principes : navigation des pages

Définitions de l’enchaînement des pages par un
ensemble de règles de navigation
21/04/2017
JSF – Le Merdy Eric – Mihura David
14
Principes : internationalisation


Possibilité de définir des locales
Correspondance
 clé
→ valeur internationalisée
useridLabel=Userid
passwordLabel=Password
loginSubmitLabel=Login
21/04/2017
useridLabel=Nom de l'Utilisateur
passwordLabel=Mot de Passe
loginSubmitLabel=Connectez
JSF – Le Merdy Eric – Mihura David
15
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
21/04/2017
JSF – Le Merdy Eric – Mihura David
16
Mise en Œuvre des
principes
21/04/2017
JSF – Le Merdy Eric – Mihura David
17
Etude de cas

Une page de login
 Un
seul utilisateur
valide
 3 pages :



21/04/2017
Authentification
Accueil (si réussie)
Erreur (sinon)
JSF – Le Merdy Eric – Mihura David
18
1. Le bean du support

Dans un package jsfLogin
21/04/2017
JSF – Le Merdy Eric – Mihura David
19
2. Déclaration du bean dans
face-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>
21/04/2017
JSF – Le Merdy Eric – Mihura David
20
3. Création des pages

Import des librairies
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

Ressources (internationalisation)
<f:loadBundle basename="jsflogin.Resources" var="jsfloginBundle"/>

Utilisation des balises
<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>
21/04/2017
JSF – Le Merdy Eric – Mihura David
21
4. Navigation des pages
face-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>
/login.jsp
</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>
21/04/2017
JSF – Le Merdy Eric – Mihura David
/success.jsp
return
success
/failure.jsp
failure
22
Quelques outils
Java
Studio Creator
Plugin Eclipse : JSF Studio
D’autres outils
21/04/2017
JSF – Le Merdy Eric – Mihura David
23
Java Studio Creator (1/3)
Produit Sun
 Licence propriétaire
 IDE complet

 Serveur
J2EE intégré
 Basé sur NetBeans

Développement « à la souris »
21/04/2017
JSF – Le Merdy Eric – Mihura David
24
Java Studio Creator (2/3)

Points forts
 Développement
 Tout

rapide
est intégré
Points faibles
 Moins
de maîtrise sur le code généré
 Entièrement Sun (forte dépendance)
 Produit jeune

21/04/2017
Manque de robustesse
JSF – Le Merdy Eric – Mihura David
25
Java Studio Creator (3/3)
21/04/2017
JSF – Le Merdy Eric – Mihura David
26
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

21/04/2017
JSF – Le Merdy Eric – Mihura David
27
Eclipse : JSF Studio (2/3)

Points forts:
 Puissance
d’Eclipse
 Editeur JSP complet
 Indépendant du serveur

Point faible
 Manque
21/04/2017
de performance
JSF – Le Merdy Eric – Mihura David
28
Eclipse : JSF Studio (3/3)
21/04/2017
JSF – Le Merdy Eric – Mihura David
29
D’autres outils JSF



MyEclipse
WebFaces
Faces console
 Standalone
 JDeveloper
 JBuilder
 NetBeans
 Eclipse
21/04/2017
JSF – Le Merdy Eric – Mihura David
30
Bilan
JSF
vs Struts
Attentes respectées ?
21/04/2017
JSF – Le Merdy Eric – Mihura David
31
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
21/04/2017
JSF – Le Merdy Eric – Mihura David
32
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

21/04/2017
JSF – Le Merdy Eric – Mihura David
33
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
21/04/2017
a su tirer expérience de Struts
JSF – Le Merdy Eric – Mihura David
34
Attentes respectées (1/2)

JSF est-il une bonne solution ?
 Standardisé
 Règles
de navigation
 Mise en œuvre des composants graphiques

21/04/2017
Approche RAD
JSF – Le Merdy Eric – Mihura David
35
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
21/04/2017
JSF – Le Merdy Eric – Mihura David
36
Conclusion
21/04/2017
JSF – Le Merdy Eric – Mihura David
37
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

21/04/2017
JSF – Le Merdy Eric – Mihura David
38
Téléchargement