IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ StrutsConsultez toutes les FAQ

Nombre d'auteurs : 25, nombre de questions : 96, dernière mise à jour : 23 février 2015  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

SommaireConfiguration de l'application web (9)
précédent sommaire suivant
 

Le framework Struts consiste en une application web classique, dont le point d'entrée unique (MVC model 2 oblige) est une servlet appelée ActionServlet.

Pour configurer l'ActionServlet, vous devez dans un premier temps déclarer la servlet et lui attribuer un alias :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
<web-app> 
  <servlet> 
    <servlet-name>action<servlet-name> 
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
  </servlet> 
... 
</web-app>
<servlet-name> définit l'alias dont vous devez vous servir dans le reste du descripteur de déploiement web.xml.
<servlet-class> définit le nom entièrement qualifié de la servlet ActionServlet.
<load-on-startup> (entier positif) sert à attribuer une priorité de chargement de la servlet par le conteneur, 1 étant la priorité la plus élevée.

Pour définir quelles sont les requêtes que la servlet ActionServlet doit intercepter, il faut configurer le mapping de celle-ci :

Code xml : Sélectionner tout
1
2
3
4
<servlet-mapping> 
  <servlet-name>action</servlet-name> 
  <url-pattern>*.do</url-pattern> 
</servlet-mapping>

Dans cet exemple, toutes les requêtes qui finissent par *.do sont interceptées et traitées par la servlet ActionServlet.
Il est d'usage d'utiliser *.do ou /do/* comme expression régulière pour définir le mapping.

Mis à jour le 19 février 2005 Alwin RanDomX

Le nom et l'emplacement du fichier struts-config.xml est spécifié par le paramètre d'initialisation config dans la déclaration de la servlet ActionServlet.
Le chemin vers ce fichier est donné relativement au contexte. L'exemple suivant est identique à une déclaration sans section <init-param> (valeur par défaut) :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
<web-app> 
  <servlet> 
    <servlet-name>action</servlet-name> 
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
    <init-param> 
      <param-name>config<param-name> 
      <param-value>/WEB-INF/struts-config.xml<param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup>     
  </servlet> 
... 
</web-app>

Vous pouvez changer cette valeur pour faire pointer le paramètre vers le fichier de votre choix.

Vous pouvez déclarer plusieurs fichiers de configuration en les séparant par des virgules.

Mis à jour le 19 février 2005 Alwin RanDomX Ricky81

La configuration se fait comme pour une application monomodule, à la différence près que le nom du paramètre d'initialisation est suffixé par le nom du module :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
<web-app> 
  <servlet> 
    <servlet-name>action</servlet-name> 
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
    <init-param> 
      <param-name>config/moduleXXX<param-name> 
      <param-value>/WEB-INF/struts-config_moduleXXX.xml<param-value> 
    </init-param> 
  </servlet> 
... 
</web-app>

Vous pouvez changer cette valeur pour faire pointer le paramètre vers le fichier de votre choix.

Vous pouvez déclarer plusieurs fichiers de configuration en les séparant par des virgules.

Vous pouvez répéter le paramètre pour chaque module de votre application.

Mis à jour le 19 février 2005 RanDomX Ricky81

Pour utiliser plusieurs fichiers de configuration pour un seul module Struts, il suffit de les déclarer dans le paramètre d'initialisation config, séparés par des virgules.

Par exemple, pour le module par défaut :

Code xml : Sélectionner tout
1
2
3
4
5
6
<init-param> 
   <param-name>config</param-name> 
   <param-value> 
      /WEB-INF/struts-config.xml,/WEB-INF/struts-config2.xml 
   </param-value> 
</init-param>

Ceci peut s'avérer très intéressant lorsque les fichiers de configuration prennent de l'importance.
Cela peut permettre de séparer les différentes parties de ces fichiers.
Attention cependant par la suite aux collisions de noms de formBean et d'actions plus difficiles à éviter lorsqu'on utilise plusieurs fichiers.

Mis à jour le 19 mai 2004 lunatix RanDomX

La ou les pages d'accueil d'une application web sont configurées par le paramètre welcome-file-list.

Par exemple, si vous souhaitez afficher la page monindex.jsp comme page d'entrée de l'application, il faut le déclarer comme ceci:

Code xml : Sélectionner tout
1
2
3
4
5
<web-app> 
  <welcome-file-list> 
    <welcome-file>monindex.jsp</welcome-file> 
  </welcome-file-list> 
</web-app>

Vous pouvez spécifier plusieurs éléments <welcome-file>.

Mis à jour le 19 février 2005 RanDomX

Struts est livré avec des bibliothèques de balises standard.

Pour pouvoir les utiliser dans les pages JSP, il faut déclarer leurs descripteurs dans le fichier de configuration web.xml.

Quelle que soit la taglib, sa déclaration prend la forme suivante :

Code XML : Sélectionner tout
1
2
3
4
5
6
7
<web-app> 
... 
  <taglib> 
    <taglib-uri>AliasTaglib;</taglib-uri> 
    <taglib-location>CheminRelatifAuContexte/NomDuDescripteur</taglib-location> 
  </taglib> 
</web-app>

Par exemple pour la taglib html de Struts :

Code XML : Sélectionner tout
1
2
3
4
5
6
7
<web-app> 
... 
  <taglib> 
    <taglib-uri>StrutsHtml</taglib-uri> 
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location> 
  </taglib> 
</web-app>

Dans la JSP, il faut ensuite faire référence à la taglib :

Code JSP : Sélectionner tout
1
2
3
4
<%@ taglib uri="StrutsHtml" prefix="html" %> 
<html:html> 
... 
</html:html>

On notera qu'il est d'usage de déclarer le chemin relatif comme alias.

Attention, les exigences de la déclaration varient en fonction de l'implémentation de J2EE/Java EE. À partir de J2EE 1.4, il n'est plus nécessaire de déclarer les taglibs dans le web.xml.

Mis à jour le 19 février 2005 RanDomX Ricky81

Il suffit de rajouter les lignes de configuration suivantes dans le fichier web.xml :

Code XML : Sélectionner tout
1
2
3
4
5
6
7
8
<filter> 
  <filter-name>struts2</filter-name> 
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
</filter> 
<filter-mapping> 
  <filter-name>struts2</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping>

Par défaut, toutes les requetes en .action seront redirigés vers le controlleur Struts 2.

Mis à jour le 23 février 2015 denisC Robin56

Il suffit de rajouter le jar struts2-spring-plugin-x-x-x.jar (disponible dans la distribution full de Struts 2).

Modifier le fichier web.xml en y rajoutant :

Code XML : Sélectionner tout
1
2
3
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>

Puis de créer un fichier applicationContext.xml dans le repertoire WEB-INF qui définisse la configuration Spring.

Mis à jour le 23 février 2015 denisC Robin56

Il est possible de définir un emplacement et un fichier autre que celui par défaut en définissant une variable de contexte dans le fichier web.xml :

Code XML : Sélectionner tout
1
2
3
4
5
6
7
8
<context-param> 
	<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name> 
	<param-value> 
		/commun/strutsconfig/tiles.xml,  
		/module1/strutsconfig/tiles.xml 
	</param-value> 
	<description>Définition des chemins des fichiers de configuration de tiles 2</description> 
</context-param>

Mis à jour le 23 février 2015 ptit-lu Robin56

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2022 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.