JSF : Java Server faces

concepcionsockSoftware and s/w Development

Aug 15, 2012 (5 years and 3 months ago)

476 views

16/03/2013

JSF

Java Server Faces

Master 2 Pro GLR

TER

David Mihura

Eric Le Merdy

JSF


Le Merdy Eric


Mihura David

16/03/2013

2

Plan


Problématique


Bref Historique


Solution JSF


Principes


Mise en Œuvre des principes


Quelques outils


Bilan


Conclusion

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

4

Bref Historique


Divergences d'approche selon les éditeurs.


Plus grande séparation des concepts.

Sun

Open
-
source

Microsoft

1996
1997

Servlet

PHP,PERL,etc…

ASP

1998

JSP

MVC

ASP.NET, WebForms

2000

Struts

2004

JSF

16/03/2013

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 David

16/03/2013

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 David

16/03/2013

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

16/03/2013

JSF


Le Merdy Eric


Mihura David

8

Principes

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

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 David

16/03/2013

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 David

16/03/2013

12

Exemple d’événements

Accepter

X

EVENEMENT

value_changed

Gérer

événement

Changement
état

action

Enregistrement
formulaire

JSF


Le Merdy Eric


Mihura David

16/03/2013

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ées


Ex : 15000


15,000


Personnalisation possible

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

15

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

16/03/2013

16

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


16/03/2013

JSF


Le Merdy Eric


Mihura David

17

Mise en Œuvre des
principes

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

19

1. Le bean du support


Dans un package jsfLogin

JSF


Le Merdy Eric


Mihura David

16/03/2013

20

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>

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

22

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>

</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

16/03/2013

JSF


Le Merdy Eric


Mihura David

23

Quelques outils


Java Studio Creator


Plugin Eclipse : JSF Studio


D’autres outils

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

25

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

16/03/2013

26

Java Studio Creator (3/3)

JSF


Le Merdy Eric


Mihura David

16/03/2013

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 David

16/03/2013

28

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

16/03/2013

29

Eclipse : JSF Studio (3/3)

JSF


Le Merdy Eric


Mihura David

16/03/2013

30

D’autres outils JSF


MyEclipse


WebFaces


Faces console


Standalone


JDeveloper


JBuilder


NetBeans


Eclipse

16/03/2013

JSF


Le Merdy Eric


Mihura David

31

Bilan


JSF vs Struts


Attentes respectées ?

JSF


Le Merdy Eric


Mihura David

16/03/2013

32

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

16/03/2013

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 David

16/03/2013

34

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

16/03/2013

35

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

16/03/2013

36

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

16/03/2013

JSF


Le Merdy Eric


Mihura David

37

Conclusion

JSF


Le Merdy Eric


Mihura David

16/03/2013

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