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 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 ?
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 Of course, when developing web applications today, everyone has to deal with these problems, and everyone solves them in their own way, increasing development time and hurting maintainability. JSF tries to offer a unified way to deal with these issues.
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
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
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
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
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