300 likes | 455 Views
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII. GRANIÉ Laurent. Ingénieur de Développement. mardi 30 novembre 14h - A030. Le Développement d’Application Web. Le Développement d’Application Web. Toujours les mêmes problèmes
E N D
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII GRANIÉ Laurent Ingénieur de Développement mardi 30 novembre 14h - A030
Le Développement d’Application Web • Toujours les mêmes problèmes • Interface complexe et souvent modifiée • “No limit” du designer / client • Développement “from scratch” • Plusieurs métiers que l’on veut indépendants les uns des autres • Développements parallèles • Couplages faibles
Le Développement d’Application Web • Code réutilisable • Swing • Component, Container => Encapsulation • Modèle événementiel • Web • Difficile de savoir ce qu’il arrive par analyse de la request • Voir l’interface sous forme de concepts de haut niveau
JSF une solution ? • Ce que propose la spécification JSF • Manipuler les composants graphiques entre les requests • Rendu HTML • Support pour le traitement des formualires • Modèle fortement typé événement • Mapping des valeurs de la request • Gestion simple des Exceptions • Navigation et interaction avec le modèle objets
JSF une solution ? • Préciser les rôles de chacun • Designer (HTML / JavaScript) • Dévelopeur de composants graphiques • Réutilisabilité • Encodage de la request • Gestion d’événements • Dévelopeurs d’application • O/R, Services Métier, etc … • Éditeurs • IDE • Implémentations de JSF
Le cycle de vie d’une page jsf WAHOU ! WAHOU !
Le cycle de vie d’une page jsf Restore View Phase • Construction de l’arbre des composants • Branchement aux composants • Des gestionnaires d’événements • Des convertiseurs, validateurs • Enregistrement de la vue dans le FacesContext Vue objet / java de l’interface
Le cycle de vie d’une page jsf Apply Request Values Phase • Chaque composant extrait sa valeur de la request (decode) • Les erreurs éventuelles sont stockées dans le FacesContext Les composants ont une valeur
Le cycle de vie d’une page jsf Process Validations Phase • Tous les validateurs de la vue sont executés • Les erreurs sont stockées dans la FacesContext Les composants sont valides
Le cycle de vie d’une page jsf Update Model Values Phase • Les donées de la vue sont apliquées aux objets côté serveur. Le modèle objet côté serveur est mise à jour
Le cycle de vie d’une page jsf Invoke Application Phase • Phase de navigation • Gestion des evénements d’application Choix de la redirection
Le cycle de vie d’une page jsf Render Response Phase • Choix du container de rendu • Par default : Jsp Container L’arbre de composant est rendu
Premières conclusions • Problématiques courantes des applications web • Mapping HTTP/objet + convertion et validation • Navigations • Une vue client côté serveur • Retrouve l’esprit événement des clients riches Java • Vue de composants et non de valeurs On monte d’un niveau
Premières conclusions Java Server Faces Framework (MVC) Taglib Java Server Page Servlet HTTP
JSF vs. Struts • Les points forts de JSF • Agrégation de composants simples dans des composants plus complexes (displaytag) • Support d’autres technologies de rendu (Renderer minitel) • Acces au bean par nom • Langage plus expressif (taglib) • Définition (bean, contrôleur) plus simple : pas d’héritage • Fichiers de configuration plus simple • Drag-and-drop dans les IDE => productivité
JSF vs. Struts • Les points faibles de JSF • Maîtrise faible de JSF vs. Struts (agence, communauté) • Support d’IDE (de moins en moins) • Support d’autres technologies de rendu • Confusion entre les URL (.jsp.faces) • Approche self-submit (.jsp, .do) • Pas d’équivalent aux Tiles (MyFaces) • Encore peu de Validateur • Pas de validation côté client (Javascript) • Pas de web-app vide d’initialisation
Conclusions • Vue client côté serveur ! • Composants graphiques de haut niveau • Spécification • de la request (validation, conversion) • de la navigation • Approche différente de Struts • Contrôleur (action vs. événement) • Encore beaucoup de questions …
Bibliographie • Introduction to JavaServer Faces http://www.onjava.com/pub/a/onjava/2004/04/07/jsf.html • Introduction to JavaServer Faces, Part 1 http://www.devshed.com/c/a/Java/Introduction-to-JavaServer-Faces-1/ JSF: Introduction, Installation, and Setup http://www.coreservlets.com/JSF-Tutorial/#Section1 The J2EE 1.4 Tutorial http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html