Chapitre4 Struts

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 34

Chapitre 4 : Struts Framework

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

VI - Forward & Mapping


Modlisation des flots (navigation) Encodage des liens de navigation avec STRUTS

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

VIII - Tiles (modles et dfinitions de rgions)


Notion de "tiles" Vue d'ensemble schmatique Mise en uvre des "tiles" Constitution d'une template Eventuelle (et rare) utilisation directe au sein d'une page JSP Dfinitions au sein de tiles-def.xml Renvois/Redirections vers une dfinition spcifique
30.06.2011

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

Super Contrleur ActionServlet et configuration associe


La servlet ActionServlet constitue le c ur du framework STRUTS Voici un extrait du fichier de configuration web.xml de ltude de cas EShop.

30.06.2011

web.xml

30.06.2011

ActionForm Bean et Validation des saisies


Un Form Bean se dclare dans le fichier struts-config.xml de la faon suivante :

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

Considrations sur le multi-threading


Un "bean" de type "Action" que l'on peut considrer comme un "bean" de traitement ou comme un "sous servlet" est toujours instanci qu'une seule fois par les mcanismes internes de STRUTS . La mthode execute(...) de la classe Action peut donc tre appele plusieurs fois en mme temps par diffrents threads. Consquences: des blocs en synchronized(this) { ... } s'imposent parfois s'il faut manipuler des attributs dclars dans le haut de la classe d' action.

30.06.2011

Les bibliothques de balises Struts

30.06.2011

i18n dans Struts

30.06.2011

i18n dans Struts


Dans lexemple prcdent (tir de la page /pages/backEnd/index.jsp ) la balise <bean:message key="login.connect"/> dicte aux mcanismes de STRUTS de rcuprer le texte associ au point d'entre " login.connect " du fichier de ressources li l'application web courante . Ce fichier de ressources tait rfrenc dans web.xml de la faon suivante

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

i18n dans Struts


Exemple :

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

Accs simplifi au "FormBean"


Au lieu de stocker les valeurs des champs dun formulaire dans la requte ou dans la session et par la suite les rcuprer sur le mme formulaire en cas derreur, on peut se permettre d'crire seulement <html:text property="identifier"/> Dans ce dernier le java bean automatiquement utilis en interne pour rcuprer les valeurs (via getXxx() ) correspond au "Form Bean" (de scope="session" ou "request") dont le nom (dans struts-config.xml [<action path='/loginAdmin' ... name='loginForm" ...>] ) est "loginForm" si l'attribut action de la balise <html:form> englobante vaut "/ loginAdmin.shop ". !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!????????????

30.06.2011

Affichage de valeurs dans une page jsp


La balise <bean:write> de Struts est une version amliore de <jsp:getProperty> qui: reconnat une syntaxe volue des noms de proprits (ex: property="subpartx.propy"

dclenchant getSubpartx().getPropy() ). <bean:write name="empruntForm" property="mensualite />

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

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy