Transcript Document
Formation Struts (Struts 1.3.8) www.objis.com - Formation STRUTS 1 A propos d’Objis… Centre de formation depuis 2005 Spécialiste technologies Java/J2ee Formations intra/inter entreprises Théorie (30%) et pratique (70%) Paris – Lyon – Dakar www.objis.com www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 2 Formateur : Douglas Mbiandou Ingénieur INSA Lyon (2000) 8 ans d'expériences projets SI Architecte / Formateur Java Directeur technique Objis (www.objis.com) Président Club Solidarité Numérique •www.club-solidarite-numerique.org www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 3 SOMMAIRE (3j) • Rappels J2EE • Historique, présentation, positionnement • Configuration struts : struts-config.xml • Actions et formulaires • Bibliothèque de balise Struts • Validation de formulaires : Validator • Gestion d'erreurs • Industrialisation d'écrans avec Tiles • Application multi modules • Intégration avec Hibernate • Intégration avec EJB • Conclusion – ressources www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 4 Rappels J2EE Architecture Livraisons Services Modularité www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 5 Architecture J2EE www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 6 Livraisons J2EE www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 7 Services J2EE JNDI : Java Naming Directory Interface JCA : Java Connector Architecture JTA : Java Transaction API JPA : Java Persistence API JMS : Java Message Service JAAS : Java Authentication & Authorisation Service JAX-WS : Java API for XML Web Services JAXB : Java API for XML Binding www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 8 Architecture multicouche www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 9 Introduction STRUTS Historique Pattern MVC2 Cycle de vie requête HTTP Avantages / Inconvénients Concurrents www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 10 Historique Struts Initiative du projet Jakarta (jakarta.apache.org) MVC system for JSP technology Juillet 2001: Struts 1.0 Craig Mac Clanahan Struts n'est pas une spécification www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 11 Modèle – Vue – Controleur (MVC) www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 12 Modèle – Vue – Controleur (MVC) www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 13 MVC avec Struts Vue = JSP, HTML, XML... Controleur = servlet ActionServlet Modèle (métier) = JavaBean, EJB, Web service... www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 14 Modèle – Vue – Controleur (MVC) www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 15 Cycle de vie d'une requête www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 16 Avantages Struts Gère les formulaires et actions de l'utilisateur Réduit la répétition de code, Augmente flexibilité et fiabilité, Réduit le couplage entre composants. Framework de présentation le plus réputé. Nombreux développeurs Struts. www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 17 Inconvénients Struts Utilisable uniquement env web : servlets / jsp •param HttpServletRequest, HttpServletResponse Pas de mécanisme standard d'interception des actions. •gestion Sécurité, Logging, accès DB... Séparation entre action et formulaire peu justifiée. •Augmente nb de classes à écrire Absence de mécanisme d'accès à une couche métier www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 18 Concurents Struts Spring MVC ( Conteneur léger, Injection dép.) AJAX (Javascript + XML asynchrone) WebWork / Struts 2 JSF (Java Server Faces) Tapestry www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 19 Composantes et outils Struts Controleur Les 5 sections de struts-config.xml Bean Formulaire & DynaForm Action Struts Bibliothèque de balises Accès aux données JDBC Validation de formulaire : Validator Création d'écrans avec Tiles www.objis.com - Formation SPRING 20 Le Controleur Servlet org.apache.struts.action.ActionServlet (présent dans struts.jar) Configuré dans web.xml et struts-config.xml Gère toutes les requêtes qui respectent un certains format à spécifier (ex : *.do) Assure redirection vers autre action ou bien vue Appelé à travers URL / lien HTML www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 21 Controleur : configuration web.xml configuration via struts-config.xml gestion par controlleur URLs type http://serveur/page.do www.objis.com - Formation SPRING 22 Controleur : configuration struts-config.xml Liste beans formulaire (associés à une jsp) mapping URL / Action Struts Textes, multilinguisme www.objis.com - Formation SPRING Les 5 sections de struts-config.xml <form-beans> : Liste des formulaires Struts <action-mappings> : Partie la plus importante. permet de lier une URL à une action. <message-ressources> : fichier de propriété <global-exeptions> : gestion des exceptions <global-forwards> : donne des noms génériques aux pages jsp. ces noms peuvent être utilisés depuis n'importe quelle action struts. www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 24 Bean formulaire (<form-beans>) Page web et bean form associé 1 champ -->1 variable www.objis.com - Formation SPRING 25 DynaActionForm (<form-beans>) Extension de FormBean Plus besoin de coder le bean 'à la main' ! FormBean généré dynamiquement par Struts Configuration dans struts-config.xml Utilisation directe dans l'action www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 26 DynaActionForm (<form-beans>) struts-config.xml HelloAction.java www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 27 Action Struts Objectif : effectuer traitement (généralement à travers instanciation d'une couche métier bean/EJB) puis renvoyer l'utilisateur vers nouvelle page, représentée par ActionForward. Hérite de org.apache.struts.action.Action méthode execute() à 4 paramètres • mapping : permet de retrouver les vues décrites dans <forward> de struts-config.xml . Ex : mapping.findFormard (“error”). • form: formulaire struts décrit (form-bean) dans strutsconfig.xml – request/response : objets HttpServletRequest, www.objis.com - Formation HttpservletResponse SPRING 28 Action Struts : Exemple Codage de l'action Configuration de l'action dans struts-config.xml www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 29 Récupération d'objet dans une Action Struts Pour travailler avec un objet à partir d'une action Struts, nous le crééons (en dur) avec les techniques suivantes • New() • JNDI Lookup INCONVENIENT : cela créée un couplage (statique) fort entre l'objet demandeur et l'objet apellé. Application : Accès couches services et DAO (Data Access Object) SOLUTION : injection de dépendances (ex : Spring) www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 30 Bibliothèque de balises Objectif : aider le développeur à créer des Vues JSP 5 librairies •Bean : manipuler javabean dans JSP •HTML : d'excellente qualité, intuitive. Créer formulaires. •Logic : boucles et branchement conditionnels •Nested : Imbrication. Utile pour les arbres d'objets. •Tiles : Inclusion et paramétrage de fragment tiles. Détronés progressivement par tags JSTL/EL www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 31 Bibliothèque de balises Struts 1.3.8 www.objis.com - Formation SPRING 32 Validation coté serveur : exemple www.objis.com - Formation SPRING 33 Validation coté serveur : méthodologie Il faut redéfinir la méthode validate(ActionMapping mapping,HttpServletRequest request) de l'ActionForm et y implémenter les validations. Si aucune erreur n'est constatée, la méthode retourne null ou une instance de ActionErrors de taille 0. Si une erreur est constatée, une instance de ActionErrors contenant une ou plusieurs instances de ActionMessage (ActionError pour d'anciennes versions de Struts) est retournée. Les messages d'erreurs sont alors affichés grâce à la balise <html:errors/> www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 34 Validation coté serveur : mise en oeuvre AdressForm.java MessageRessource.properties www.objis.com - Formation SPRING 35 Validator : présentation Technologie de validation de formulaire Struts coté client ou Serveur. Souvent utilisé coté client. Beaucoup de code javascript déja prêt et implémenté dans des classes Jaa (voir validation-rules.xml ). Messages d'erreurs pour • Champs email, entier, chaine, carte de crédit,... Validation coté client (contraitement à validation coté serveur via validate() du bean formulaire) Plug-in Struts intégré (balise <plug-in> dans strutsconfig.xml) www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 36 Validation coté client www.objis.com - Formation SPRING 37 Validation coté client : mise en oeuvre struts-config.xml validation.xml MessageRessource.properties 38 www.objis.com - Formation SPRING Validation client : méthodologie 1 : Installer Plug-in validator dans struts-config.xml. 2 : Configurer et ajouter les messages d'erreurs à afficher. 3 : Créer et mettre à jour \WEB-INF\validation.xml avec règles. Attention si pb langue : <formset language=”fr”> 4 : Inclure <html:javascript formName=”NomFormbean”/> dans JSP ,juste avant la fermeture du formulaire (</html:form>) 5 : Ajouter onsubmit=”return validateNomFormbean(this);” lors de la déclaration du formulaire Struts www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 39 Tiles : présentation Technologie de création de vues (MVC) Création de vues par héritage (extends) Nommer les pages au lieu de donner leur chemin complet Réutiliser des composants de présentation (Ex : Internationalisation) www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 40 mise en oeuvre Tiles : méthode 1 : Ajout du <plug-in> Tiles dans struts-config.xml + vérif présence de struts-tiles.jar dans \WEB-INF\lib + config web.xml 2 : Créer le fichier modèle : template.jsp (“header”, “body”, “left”,...) 3 : Créer fichier \WEB-INF\tiles-def.xml avec une première 'definition'. Ex : definition “accueil” basée sur le fichier modèle (<tiles:insert page='template.jsp'> avec des <tiles:put> de header.jsp, body.jsp...) 4 : Créez d'autres vues héritant de la vue “accueil” par héritage. •Ex la vue index (<definition name=”contact” extends=”accueil”>) 5 : Modifier les <forward> dans struts-config.xml avec noms de vues Tiles . Ex : <action path=”/accueil” forward=”accueil” > 6 : Packager et Tester l'application www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 41 Tiles : mise en oeuvre struts-config.xml web.xml : init-param du controleur JSP www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 42 Exemple tiles-def.xml www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 43 Exemple template.jsp www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 44 Exemple vue tiles www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 45 Accès aux données : DataSource www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 46 DataSource : configuration avec struts 1.2.9 Conseil : Utiliser/compléter l'exemple commenté présent dans struts-blank.war www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 47 DataSource : récupération avec struts 1.2.9 www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 48 DataSource : configuration avec struts 1.3.8 context.xml web.xml www.objis.com - Formation SPRING 49 DataSource : récupération avec struts 1.3.8 Accès à la base de données via JNDI Lookup www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 50 DataSource : Méthodologie 1 : Ajouter le driver JDBC dans librairies chargées par le serveur d'application (Ex : dans \lib pour Tomcat6) 2 : Suivant version de Struts •struts 1.2.x : Ajouter balise <datasource> dans struts-config.xml •Struts 1.3.x : Configurer DataSource (web.xml + context.xml) 3 : Créer la classe Action qui va utiliser la Datasource (Ex : DatabaseAction) 4 : Mapper dans struts-config.xml l'action avec vue (JSP/Tiles) associée au succes de l'action (ex :'success') 5 : Tester l'application www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 51 Applications modulaires 1 : Préparer un fichier de configuration pour chaque module (struts-module1.xml , struts-module2.xml...) 2 : Informer le controlleur de vos modules 3 : Utiliser les Actions pour se référer aux pages Module 'par defaut' www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 52 Applications modulaires Utiliser org.apache.struts.actions.SwitchAction Switch vers module B Switch vers module par defaut www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 53 Autres Formations Objis Architectures SOA Mise en oeuvre ESB (ServiceMix , Mule) Développement de services web Développement et Conception XML Développement Struts Développement Hibernate ... www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 54 10 tutoriaux STRUTS 1 www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 55 Pour aller plus loin www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 56 Contact : [email protected] www.objis.com www.objis.com - Formation STRUTS www.objis.com - Formation SPRING 57