Chapitre4 Struts
Chapitre4 Struts
Chapitre4 Struts
A. Nejeoui
Introduction
La technologie J2EE est largement diffuse (elle est maintenant utilise partout, les JSP sont parmi les facteurs qui ont fortement contribu sa diffusion. Presque tout les dveloppeur des applications web utilisent les JSP, et aussi la disponibilit des conteneurs de servlets gratuits et Libres comme Apache tomcat. Comme les JSP on atteint un degrs de maturit et les dveloppeurs sont devenus plus expriments en JSP la plupart dentre eux se sont orients vers lutilisation de ce quon appelle les Framework de dveloppement des applications web( ou Framework pour abrviation). Les Framework aident dvelopper les application de manire plus rapide et plus efficace en offrant des librairies prtes. Une simple recherche sur le net renvoie une dizaine des Framework, mais struts reste le meuilleur sur le march pour linstant car il implmente parfaitement le Design Pattern MVC2.
30.06.2011
Plan
I Design Pattern MVC II - Prsentation de STRUTS
Avantages et inconvnients de STRUTS Architecture de STRUTS Super Contrleur ActionServlet et configuration associe ActionForm Bean et Validation des saisies Action Bean Considrations sur le multi-threading Les bibliothques de balises Struts i18n dans Struts Accs simplifi au "FormBean" li la page courante Affichage de valeurs dans une page jsp Prsentation rapide des fonctionnalits avances Struts Validator. Tiles
30.06.2011
Plan
III FormBean
1 FormBean : intrts et mise en uvre Rles des "FormBean / ActionForm" Code java "standard" d'un "FormBean" Configuration XML (struts-config.xml). 2 FormBean : variantes possibles implmentations. Map Backed ActionForm. "Form Bean" commun plusieurs crans. DynaActionForm. Sous classe de DynaActionForm avec validation Prsentation de DynaValidatorForm
IV - Beans "Action"
1 ActionBean : intrts et mise en oeuvre Rles des "ActionBean"
30.06.2011
Plan
Code java "standard" Configuration XML (struts.xml). 2 Sous classement ventuel sur les "ActionBean" Principe gnral Exemple de code (Action gnrique + sous classe). Actions prdfinies
V - TagLib de STRUTS
Vue d'ensemble sur les balises de STRUTS struts-bean struts-html html:file et upload struts-Logic
30.06.2011
Plan
VII - STRUTS-Validator
Principes de fonctionnement Configuration (validation.xml) Configuration gnrale Principales rgles et paramtrages associs Activation de la validation cot "client" en javascript Classe DynaValidatorForm (tout XML) Utilisation directe de DynaValidatorForm Double validation (XML + java) via sous classe
MVC
Le Design Pattern MVC permet la Sparation du code en trois composants indpendants lun de lautre de tel faon liminer ou minimiser la propagation des changements effectus sur un composant aux autres composants, ces trois composants sont : La Vue se focalise sur la prsentation Le Modle se focalise sur les donnes Le Contrleur se focalise sur les traitements, contrles des enchanements des oprations (navigation, ...) Ce Modle est appliqu pour les dveloppements d'applications locales indpendantes (swing, SWT.) d'architectures 3-tiers (struts, JSF, Spring-MVC, Velocity ).
30.06.2011
MVC2
La version "MVC 2" correspond une variante amliore de "MVC pour le Web" o il ny a quun seul contrleur (servlet) gnrique supervisant toute les navigations entre les pages (avantage : un seul point central scuriser et paramtrer dans web.xml). Collaboration MVC2 au sein d'une application Web dveloppe en Java: La Servlet joue le rle de contrleur : il reoit une requte, lui applique un ventuel contrle de saisie (validation quelquefois dlgue ou automatise). Le contrleur demande un JavaBean d'effectuer les traitements. Le JavaBean effectue (ou bien dlgue) les traitements (accs Jdbc, EJB,) et rcupre les rsultats qu'il mmorise dans ses attributs (ou dans d'ventuel(s) JavaBean(s) annexes de donnes) . Ce(s) JavaBean(s) joue(nt) le rle de Modle.
30.06.2011
MVC2
Le contrleur aprs avoir reu un statut (ok/ko) ou une exception effectue une redirection (forward) vers une page JSP pour l'affichage du rsultat ou vers une page JSP d'erreur. La page JSP (jouant le rle de Vue) rcupre les donnes ncessaires laffichage auprs du JavaBean et gnre (met en forme) la page HTML renvoyer.
30.06.2011
MVC et Struts
Le contrleur Struts : Les requtes client sont traites par la servlet ActionServlet de la librairie Struts. Lorsque cette servlet reoit la requte, elle intercepte lURL et selon la configuration de Struts fournit par le fichier strustconfig.xml elle passe le traitement la classe Action La vue Struts : Les lments de la vue sont responsables de la prsentation des information en provenece du modle au client et aussi de la collecte des informations. Gnralement on utilise les JSP pour la prsentation de la vue, on peut aussi utiliser des bibliothques de balise, javascript, css etc. Le modle Struts : La partie modle de Struts offre un modle de la logique mtier drrire lapplication Struts. Elle offre linterface avec la couche persistance et le systme back-ends. Ce composant est gnralement compos de classes java (POJO). Struts noffre pas des lment spcifique ce composant ce qui permet de rutiliser facilement le code java crit pour dautres applications.
30.06.2011
Avantages de Struts
Avantages : Produit par la fondation Apache depuis Mai 2000 Struts = framework open source pour le dveloppement d'applications web en MVC Construit autour de technologies : Servlets Java, JSP, JavaBeans et XML Propose un ensemble de classes pour les couches du MVC Facilite la communication entre couches Fournit des fonctionnalits supplmentaires : (validation, i18n, StrutsLayout, Struts-Tiles.) Efficace pour le dveloppement des projets importants Framework structurant (allant dans le sens dune bonne conception). Modle MVC2 partiellement pr-programm . Trs grande simplification de la gestion des formulaires en cas derreur(s) de saisie. Bonne bibliothque de Tag. prdfinis simplifiant la syntaxe des pages JSP.
30.06.2011
Inconvnients de Struts
Support de linternationalisation (Les textes des messages sont stocks dans des fichiers de ressources). Gestion simplifie de tl versement de fichiers . Inconvnients : Framework lourd, un peu long matriser Peu adapt pour de petits projets
30.06.2011
Installation
Installation du JDK: Tlcharger JDK 1.4 ou version ultrieur du site de SunMicrosystems Installation de Tomcat: Tlcharger et installer Tomcat partir du site dapache. Installation de Struts: Tlcharger la dernire version de Struts 1 partir du site officiale de Struts http://jakarta.apache.org/struts. Extraire les fichier dans un rprtoire de travaille et copier le fichier struts-blank.war dans le reprtoire de dploiement de votre serveur dapplication. "jakartatomcat-5.0.4\webapps" pour le conteneur Tomcat. struts-blank.war est un projet Struts prconfigur et vide qui est sert comme point de dpart du dveloppement de votre application web en Struts. struts-documentation.war contient lAPI et la documentation de Struts. struts-example.war contient un exemple de dmonstration.
30.06.2011
Architecture de Struts
30.06.2011
Architecture de Struts
Larchitecture de STRUTS repose sur les lments suivants : Une servlet prdfini ActionServlet jouant le rle de Super Contrleur gnrique. Des java bean de type ActionForm Bean ( programmer) faisant firewall entre http et les actions internes : un objet office de ActionForm Bean sert grer les paramtres http (stockage , relecture , vrification de saisies). Nb : un objet ActionForm Bean est gnralement utilis pour repeupler un formulaire html avec les champs non errons (Lutilisateur na plus qu re-saisir les champs qui posent problme). Des java bean de type Action ( programmer) et jouant le rle de sous servlet : un objet action dclenche des traitements , peuple ventuellement un DataBean avec les rsultats et initialise un renvoi vers une vue (page JSP) en utilisant les ActionMapping du fichier de configuration struts_config.xml . Des pages JSP dont la partie dynamique est en quasi totalit gre via des balises prdfinies (TagLib struts-html et struts-bean ).
30.06.2011
30.06.2011
web.xml
30.06.2011
Ainsi associ un nom logique, ce bean peut tre rfrenc au sein dun Action mapping :
Sert quoi!??
30.06.2011
ActionForm
En consquence de tous ces paramtrages, une URL en /E-Shop/ /loginAdmin.shop dclencher la servlet action qui avant de dclencher laction (de path= "/loginAdmin") va: Peupler le formBean de nom (name="logonForm") en y appelant automatiquement les mthodes en setXxx(). Invoquer la mthode validate() pour vrifier si les valeurs des paramtres Http ont bien t saisis. Le code Java du FormBean est le suivant: est ce que cette page est loginAdmin.shop?
Ou celle apple par Envoyer?je croix que c la 2
30.06.2011
ActionForm
30.06.2011
ActionForm
La classe ActionForm est utiliser pour collecter les donnes de lutilisateur et les transfrer vers le controleur (Action). Notez bien que cest dconseill de passer un objet de type ActionForm au Modle, car cette classe cre des dpendances avec le package javax.servlet ce qui rend vous classes mtiers irrutilisables dans dautres contexte. Vous pouvez utiliser le mme objet de type ActionForm dans diffrents formulaires. Vous pouvez spcifier deux niveau de porte pour votre ActionForm : request et session.
30.06.2011
ActionForm
Remarque : En cas d'erreur, la mthode execute() du bean d'action n'est mme pas invoque et le contrleur de struts renvoie la page (input="/logon.jsp") dont la balise <html:errors/> sera automatiquement remplace par la collection d'erreurs retournes. Astuce: Pour lister les erreurs sous forme de puces Vous pouvez ajouter les deux balises suivantes avec leurs cls comme suit : error.begin=<ul style="color: red;"> error.end=</ul> Voir exemple dans E-Shop/pages/backEnd/index.jsp
30.06.2011
Action Bean
Via l'entre suivante du fichier de configuration struts-config.xml
une URL de forme /E-Shop/loginAdmin.shop dclenchera la servlet action qui (sauf erreur de validation au niveau du FormBean) , va dclencher la mthode execute() de l'objet action (de path= "/loginAdmin" et dont la classe java correspond la valeur de l'attribut type).
30.06.2011
Action Bean
Dans le cas prsent , la redirection dclenche par notre action fait rfrence une configuration locale. Parfois plusieurs actions redirigent vers les mmes ressources, dans ce cas cest intressant de dclarer les redirections de manire globales comme suit :
30.06.2011
Redirection Global
30.06.2011
30.06.2011
30.06.2011
30.06.2011
En fonction de la langue utilise par l'utilisateur , le fichier pris en compte sera MessageResources.properties (pour la langue par dfaut) ou bien MessageResources_xx.properties o xx est le code du pays (ex: fr pour France). Remarque : Pour tester li18n vous devez changer la langue du navigateur.
30.06.2011
Nb: les parties en {0} , {1} sont prvues pour tre automatiquement remplacs par les paramtres de ActionMessage comme suit : new ActionMessage("error.password.required",new String []{arg1})
30.06.2011
30.06.2011
30.06.2011
Exercice
Dvelopper une application en Struts qui permet dinsrer des enregistrements dans la table Personne(id, nom, prnom adresse, phone) et afficher le message : lenregistrement (13, chetoui, ahmed, 25 rue bacha, 0612345678) a bien t insr dans la base de donnes. Si lenregistrement existe dj vous affichez le message : lenregistrement (13, chetoui, ahmed, 25 rue bacha, 0612345678) existe dans la base de donnes. En cas derreur de saisie le client est redirig vers le formulaire qui est pr remplit par les valeurs saisies, un message est affich en rouge ct du champs errons. Respecter li18n dans toute lapplication Tester lapplication en anglais et en franais.
30.06.2011
Conclusion
Dans ce chapitre on a couvert les lments de base du Framework Struts, en plaant chaque lment dans le composant du MVC adquat. Dans le chapitre qui suit on va dtailler les aspects avances de Struts : Struts Layouts, Personalisation de la ServletAction, struts validator, Struts et les EJB, utilisation de struts tiles et comment tendre le framework struts.
30.06.2011