JSF

38
27/06/22 JSF Java Server Faces Master 2 Pro GLR TER David Mihura Eric Le Merdy

description

David Mihura Eric Le Merdy. JSF. Java Server Faces. Master 2 Pro GLR TER. Plan. Problématique Bref Historique Solution JSF Principes Mise en Œuvre des principes Quelques outils Bilan Conclusion. Problématique. Evolutions des besoins : Applications Web - PowerPoint PPT Presentation

Transcript of JSF

Page 1: JSF

20/04/23

JSF

Java Server Faces

Master 2 Pro GLRTER

David MihuraEric Le Merdy

Page 2: JSF

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

Page 3: JSF

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

Page 4: JSF

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

Page 5: JSF

20/04/23 JSF – Le Merdy Eric – Mihura David 5

Solution JSF

Framework de création d’interfaces graphiques pour les applications Web

Page 6: JSF

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

Page 7: JSF

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

Page 8: JSF

20/04/23 JSF – Le Merdy Eric – Mihura David 8

Principes

Page 9: JSF

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

Page 10: JSF

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

Page 11: JSF

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

Page 12: JSF

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

Page 13: JSF

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

Page 14: JSF

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

Page 15: JSF

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

Page 16: JSF

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

Page 17: JSF

20/04/23 JSF – Le Merdy Eric – Mihura David 17

Mise en Œuvre des principes

Page 18: JSF

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)

Page 19: JSF

JSF – Le Merdy Eric – Mihura David20/04/23 19

1. Le bean du support

Dans un package jsfLogin

Page 20: JSF

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>

Page 21: JSF

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>

Page 22: JSF

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

Page 23: JSF

20/04/23 JSF – Le Merdy Eric – Mihura David 23

Quelques outils

Java Studio CreatorPlugin Eclipse : JSF StudioD’autres outils

Page 24: JSF

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 »

Page 25: JSF

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

Page 26: JSF

JSF – Le Merdy Eric – Mihura David20/04/23 26

Java Studio Creator (3/3)

Page 27: JSF

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

Page 28: JSF

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

Page 29: JSF

JSF – Le Merdy Eric – Mihura David20/04/23 29

Eclipse : JSF Studio (3/3)

Page 30: JSF

JSF – Le Merdy Eric – Mihura David20/04/23 30

D’autres outils JSF

MyEclipse WebFaces Faces console

Standalone JDeveloper JBuilder NetBeans Eclipse

Page 31: JSF

20/04/23 JSF – Le Merdy Eric – Mihura David 31

Bilan

JSF vs StrutsAttentes respectées ?

Page 32: JSF

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

Page 33: JSF

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

Page 34: JSF

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

Page 35: JSF

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

Page 36: JSF

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

Page 37: JSF

20/04/23 JSF – Le Merdy Eric – Mihura David 37

Conclusion

Page 38: JSF

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