Posted on janvier 26th, 2010 by admin

5 Comments

Ce tutoriel, didacticiel a pour but de vous initier à Struts en vous présentant de manière concrète ses principaux mécanismes. Nous commencerons par la mise en place de votre environnement de travail sous eclipse galileo et le moteur de servlet, Tomcat 6. Nous intégrerons les bibliothèques et jars nécessaires au fonctionnement de notre application struts 2.

I – Mise en place de l’environnement.

Nous travaillerons avec :

- Eclipse Galileo (IDE for java EE Developper) que vous pouvez trouvez ici

- Tomcat 6.x que vous pouvez télécharger ici (Pour windows téléchargez le Windows Service Installer )

A – Installation d’eclipse et tomcat.

- CrĂ©ez un dossier dev Ă  la racine d’un de vos disques dur. DĂ©compressez le fichier : eclipse-jee-galileo-SR1-win32.zip . Si vous rencontrez des problèmes pour l’installation d’Ă©clipse je vous renvois vers la documentation officielle sur le site d’Eclipse.

- Installez tomcat

A.1 – IntĂ©gration de Tomcat 6 dans Eclipse.

Nous commençons par créer un nouveau Static Web Project.

que nous nommerons ProjectName


Notre nouveau projet est créé. L’on remarque la prĂ©sence d’un deployment descriptor. Ce descripteur de dĂ©ploiement est le fichier de configuration xml de toutes les application J2ee. Il appelle struts 2, dĂ©finit votre page d’accueil par dĂ©faut, appelle spring Ă©ventuellement.. , dĂ©clare vos taglibs etc…

Le projet contient par ailleurs différents dossiers et fichiers que vous devez créer :

- Le package « scr » qui contiendra les classes de l’application.

- Le dossier WebContent qui contient nos fichiers à déployer sur le serveur web (tomcat).

- Le dossier WEB-INF (sous-dossier de Webcontent) ou nous créerons notre fichier web.xml.

- Le dossier build qui contiendra nos fichiers java compilĂ©s en « *.class » par la machine virtuelle java.

Il faut ensuite monter le serveur tomcat que l’on associe au projet :

On indique Ă  eclipse ou se trouve physiquement Tomcat :

On indique la JRE ( Java runtime library ) utilisée :

Puis l’on associe le projet au serveur :

A.2 – IntĂ©gration des bibiothèqhes (.jar) nĂ©cĂ©ssaires.

Il faut maintenant intégrer les JARS de struts que vous pouvez télécharger ici en les mettant dans le dossier

lib de votre WEB-INF. Une fois décompressé, vous devez récupérer les *.jar et les mettre dans le dossier /WEB-INF/lib/ de votre projet.

Il faut maintenant intégrer ces jars au build path de notre projet.

Faites un clic droit sur le nom de votre projet (ici projectName ) et choisissez l’entrĂ©e properties dans le menu contextuel. Ouvrez ensuite le panneau des properties de votre projet.

SĂ©lectionnez ensuite Java Build Path ( sur la gauche ) puis activez l’onglet librairies et sĂ©lectionnez le bouton Add JARS..

Sélectionnez tous les jars présents dans votre répertoire lib, puis cliquez sur OK.

Il vous faut maintenant exporter ces nouveaux jars dans votre projet eclipse.

Nous allons maintenant rajouter la librairie runtime (JRE) :

en sélectionnant le Server Runtime :

Maintenant nous allons créer une simple page en JSP pour vérifier le bon fonctionnement de notre installation.

Créez une nouvelle page JSP dans votre répertoire webContent et testez ce scriptlet (entre <body> et </body>) :

<% out.println("hello !"); %>

Faites maintenant un clic droit sur la page, choisisser run. La page devrait s’afficher avec le message : Hello ! et votre console Eclipse renvoyer (en rouge) ce message :

INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
27 janv. 2010 13:50:38 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1257 ms
27 janv. 2010 13:50:38 org.apache.catalina.core.StandardService start
INFO: Démarrage du service Catalina
27 janv. 2010 13:50:38 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20
27 janv. 2010 13:50:39 org.apache.coyote.http11.Http11Protocol start
INFO: Démarrage de Coyote HTTP/1.1 sur http-8080
27 janv. 2010 13:50:39 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
27 janv. 2010 13:50:39 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/31 config=null
27 janv. 2010 13:50:39 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1195 ms


B – Configuration d’un projet Struts2.

Struts 2 est un framework de développement. Il comprend un ensemble de bibliothèques qui facilitent le développement des interfaces web.

Struts2 est un framework orientĂ© action architecturĂ© en xml. Ses Actions permettent d’accĂ©der aux diffĂ©rents Services tel le « Model » et dĂ©terminent ce que la Vue doit afficher après leur traitement (traitement des actions par struts.xml). Les actions struts 2 implĂ©mentent des objets java appelĂ©s Beans pour chaque donnĂ©e envoyĂ©e via les formulaires. Struts repose sur un modĂ©le de conception dis MVC 2 (Modèle Vue ContrĂ´leur). Ce framework fournit un certain nombre de services tels le dĂ©bogage, les validateurs de formulaire, la gestion de la navigation ou encore la gestion de l’internationalisation.

B.1 – Les règles et convention de dĂ©veloppement en J2EE et Struts 2

Règle 1 : Ne pas utiliser de java dans la vue.

Règle 2 : Utiliser de prĂ©fĂ©rence les taglib de struts 2 <s:…/>

Règle 3 : Utiliser les validateur du framework et sa logique.

B.2 – Le descripteur de dĂ©ploiement web.xml

C’est le fichier central d’un projet JEE. Il contient les paramètres et caractĂ©ristiques de l’application. Il doĂ®t ĂŞtre prĂ©sent dans le dossier webContent/WEB-INF (webContent Ă©tant le rĂ©pertoire root de l’application). Voici ses principales caractĂ©ristiques :

Voici un fichier type web.xml pour struts2.

- La balise <web-app/> définit le corps du descripteur de déploiment.

- La balise <display-name/> définit le nom de votre application.

- La balise <welcome-files/> définit le ou les fichiers de boot de votre application.

- La balise <filter/> et <filter/mapping> dĂ©finit la servlet du filtre Struts 2 et l’url root (pattern) de Struts.

- La balise <ressources/> vous permet de faire appel Ă  des ressources externes (ici une connexion Ă  une bdd)

- La balise <taglib> vous permet déclarer les bibliothèques de tag que vous allez utiliser (en plus des tag struts). Pour approfondir sur les jstl rendez-vous sur ce très bon tutoriel.

B.3 – Le controleur strust.xml


Le fichier Struts.xml, hĂ©rite d’un fichier plus important : struts-default.xml qui dĂ©finit un ensemble de mĂ©canismes par dĂ©faut. Je ne prĂ©senterais pour le moment que le fichier struts.xml que vous devez placer Ă  la racine de votre rĂ©pertoire « scr », racine de votre rĂ©pertoire de classes. Ce fichier sert principalement au routage de vos actions et Ă  la navigation.

voici son contenu :

Nous trouvons un certain nombre de balise de type <constant/> qui nous permettent de surcharger le struts default.xml.

A minima nous trouvons :

DynamicMethodInvocation = « true/false ». Cette fonction permet l’invocation dynamique de mĂ©thode (notation bang !). Il est conseillĂ© de la fixer Ă  false.

DevMode = « true/false ». Le fichier de configuration struts.xml est lu Ă  chaque dĂ©marrage de l’application. Pour nous Ă©viter le fastidieux project/clean a chaque modification du contenu du struts.xml nous passerons le devMode Ă  true (mode de dĂ©veloppement).

i18n.resources name= »package ». Le mĂ©canisme de internationalisation utilise des fichiers en name.properties pour les diffĂ©rentes langues. Nous fixons une fois pour toute le nom de ces fichiers Ă  package.

B.4 – La notion de package et d’espace de nom.

Au sein du fichier strus.xml l’on regroupe les diffĂ©rentes action struts au sein de packages.

La balise package contient trois attributs importants :

- L’attribut name qui est le nom du package proprement dit.

- L’attribut namespace qui indique d’ou et comment les action doivent ĂŞtre appellĂ©es. Dans notre exemple de strust.xml, nous apellerons nos actions directement de cette manière : /applicationContext/gotopage2 . Maintenant modifions notre fichier struts.xml en ajoutant un namesapce qualifiĂ© :

il nous faut maintenant dĂ©clencher notre action en l’appelant ainsi : /applicationContext/back-office/gotopage2. Grâce aux package et aux espaces de nom nous pouvons dĂ©finir diffĂ©rents packages appliquĂ©s Ă  telle ou telle parties de notre application web.

- Le dernier attribut ; extends, est obligatoire. Par dĂ©faut il Ă©tend « struts-default ». dĂ©finit dans le fichier struts-default.xml.

B.5 – La balise </action> et </result>.

La balise <action/> est toujours utilisĂ©e entre les balises <package> … </package>. C’est elle qui rĂ©cupère les actions reçues par la couche vue et organise leur traitements ainsi que la page jsp Ă  afficher après ce traitement. Une action doit avoir un nom (attribut name) qui doit ĂŞtre le plus comprĂ©hensible possible.

ex :

<action name=« allerPage2″ />

Une action peut faire rĂ©fĂ©rence Ă  un mĂ©thode de classe mais ce n’est pas obligatoire.

<action name=« allerPAge2″ class=« com.oneandcie.test.MaClasse » method=« allerPage2″/>

Une fois le traitement rĂ©alisĂ© (ou non) par la mĂ©thode de classe. Un rĂ©sultat est retournĂ© et traitĂ© dans la balise <action/>. Pour permettre Ă  struts de savoir ou retourner le rĂ©sultat de l’action nous utilisons la balise <result/>. Cette balise nous permet de rediriger l’internaute sur telle ou telle page suivant le rĂ©sultat du traitement de l’action.

Voici un exemple simple sans appel Ă  une methode de classe externe :

L’action gotoPage2 envoyĂ©e par notre page JSP est rĂ©cupĂ©rĂ©e dans notre fichier struts.xml par la balise <action/> puis redirigĂ©e vers une page (page2.jsp) grâce Ă  notre balise </result>.

C – Pratique : Un exemple simple : allez d’une page Ă  une autre.

Reprenons notre projet, nous allons modifier la page index.jsp de cette manière :

en y insérant la déclaration des taglibs de struts (nous y reviendront) et en incluant un lien ayant pour action gotoPage2.

Notre fichier strux.xml doit ressembler Ă  ceci :

et notre fichier web.xml Ă  ceci :

pour tester faite un clic droit sur le code de la page index.jsp et cliquer sur le lien. Vous avez codé votre première action Struts 2. Félicitation ;) !

Nous aborderons dans une seconde partie la gestion des formulaires en struts 2. N’hĂ©sitez pas Ă  laisser vos commentaires ou les difficultĂ©s rencontrĂ©es j’y rĂ©pondrais.


Si vous avez le temps merci de rĂ©pondre Ă  ce mini sondage, çà m’encouragera Ă  continuer (ou pas) ;)

5 Responses to “Tutoriel STRUTS 2 : pour bien commencer avec Struts 2 et eclipse. (alias Struts 2 pour les nuls )”


  1. igarramen

    3 weeks ago

    interested topic! Thanks


  2. Pierre

    1 week ago

    Et bien pour ma part, ce tutoriel me fut d’une très grande aide !
    Au début, Impossible de trouver une bonne structure de fichier, et mapper les configuration.
    Merci.

    Je vais lire la suite je pense =)


  3. lba

    1 week ago

    bjr et merci pour le tuto …

    - Il semble que l’on doit 1 crĂ©er un projet Web dynamique et non static comme indiquĂ© ds la premiere copie d’ecran
    - le fait de dĂ©poser les librairies ds le repertoire web-inf/lib, normalement on n’a pas besoin de les ajouter … de nouveau (ds ma version eclipse europa ils sont ajoutes Ă  « web librairies app » (config normal pour un projet web dynamic)
    - j’ai pas trouve les ressources des taglib declarĂ©s ds le web.xml


  4. admin

    1 day ago

    Effectivement il n’est pas nĂ©cessaires d’ajouter les librairies Ă  nouveau. (j’utilise Helios.)

    Tu peux récupérer le fichier c.tld ici => http://java.sun.com/products/jsp/jstl/downloads/index.html

1 Trackbacks For This Post

  1. Les tweets qui mentionnent Tutoriel STRUTS 2 : pour bien commencer avec Struts 2 et eclipse. (alias Struts 2 pour les nuls ) | OneAnCie -- Topsy.com Dit :

    [...] Ce billet était mentionné sur Twitter par Lionel LOKO, Mathieu Breton. Mathieu Breton a dit: Apprendre #Struts2 http://bit.ly/cAd6ut , http://bit.ly/aIfxGw , http://bit.ly/a3eWjK #Tutoriel #Debutant [...]

Leave a Reply