Social media Optimisation on google Social media Optimisation on twitter

Ecrit le 26 janvier 2010 par

56 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 Dynamic 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.

web xml struts 2

- 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.

et aussi

- La balise <ressources/> vous permet de faire appel à des ressources externes comme des paramètres de 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.


;)

Par Olivier Guillou

Olivier Guillou

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


  1. hani

    3 years ago

    Un tuto simple et très riche en informations.Mille et un merci, vous avez su aller directement au but sans passer par des antennes x).
    Let go to the next step :) .
    PS: si vous avez ou vous connaissez un bon tuto pour JSF et/ou Hibernate je suis preneur ^^.

    Hani


  2. anas

    3 years ago

    j’ai un problème lors de l’exécution….au démarrage du serveur une erreur s’est produite :
    GRAVE: Exception au démarrage du filtre struts2
    Action class [presentation.AjoutThesardAction.java] not found – action – file:/C:/Users/anas/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/PFA_GestionLaboratoire/WEB-INF/classes/struts.xml:10:21


    19 déc. 2012 23:09:44 org.apache.catalina.core.StandardContext start
    GRAVE: Error filterStart


    Si quelqu’un peut me proposer une solution et merci !


  3. Olivier Guillou

    3 years ago

    la classe d’ Action class [presentation.AjoutThesardAction.java] déclarée dans le fichier struts.xml à la ligne 10 n’a pas été trouvé. Vérifiez votre déclaration dans l’attribut class dde votre action.


  4. Adrien

    3 years ago

    Bonjour,

    Tout compile bien mais lorsque je clique sur le lien, j’ai ceci qui apparait :

    Etat HTTP 404 – There is no Action mapped for namespace / and action name gotopage2.

    Je ne comprend pas !


  5. Olivier Guillou

    3 years ago

    Bonjour, Il s’agit surement d’une erreur dans votre fichier struts.xml . L’action est mal déclarée ou son nom n’est pas conforme.

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