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 3 > Titre de la présentation - Date - Références 3 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 4 Développements parallèles Couplages faibles > Titre de la présentation - Date - Références 4 Le Développement d’Application Web Code réutilisable Swing Component, Container => Encapsulation Modèle événementiel Web 5 Difficile de savoir ce qu’il arrive par analyse de la request Voir l’interface sous forme de concepts de haut niveau > Titre de la présentation - Date - Références 5 JSF une solution ? 6 > Titre de la présentation - Date - Références 6 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 7 > Titre de la présentation - Date - Références 7 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 8 IDE Implémentations de JSF > Titre de la présentation - Date - Références 8 Le cycle de vie d’une page jsf 9 > Titre de la présentation - Date - Références 9 Le cycle de vie d’une page jsf WAHOU ! WAHOU ! 10 > Titre de la présentation - Date - Références 10 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 11 > Titre de la présentation - Date - Références 11 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 12 > Titre de la présentation - Date - Références 12 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 13 > Titre de la présentation - Date - Références 13 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 14 > Titre de la présentation - Date - Références 14 Le cycle de vie d’une page jsf Invoke Application Phase Phase de navigation Gestion des evénements d’application Choix de la redirection 15 > Titre de la présentation - Date - Références 15 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 16 > Titre de la présentation - Date - Références 16 Premières conclusions 17 > Titre de la présentation - Date - Références 17 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 18 > Titre de la présentation - Date - Références 18 Premières conclusions Java Server Faces Framework (MVC) Taglib Java Server Page Servlet HTTP 19 > Titre de la présentation - Date - Références 19 JSF vs. Struts 20 > Titre de la présentation - Date - Références 20 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é 21 > Titre de la présentation - Date - Références 21 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 22 > Titre de la présentation - Date - Références 22 Conclusions 23 > Titre de la présentation - Date - Références 23 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 … 24 > Titre de la présentation - Date - Références 24 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-JavaServerFaces-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 25 > Titre de la présentation - Date - Références 25