Struts 2 - Fichiers de configuration

Ce chapitre vous guidera à travers la configuration de base requise pour un Struts 2application. Ici, nous verrons ce qui peut être configuré à l'aide de quelques fichiers de configuration importants commeweb.xml, struts.xml, strutsconfig.xml et struts.properties

Honnêtement, vous pouvez commencer à travailler en utilisant simplement web.xml et struts.xmlfichiers de configuration (comme vous l'avez déjà vu dans notre chapitre précédent où notre exemple fonctionnait en utilisant ces deux fichiers). Cependant, pour votre connaissance, nous vous expliquerons également concernant d'autres fichiers.

Le fichier web.xml

Le fichier de configuration web.xml est un fichier de configuration J2EE qui détermine la manière dont les éléments de la requête HTTP sont traités par le conteneur de servlet. Ce n'est pas strictement un fichier de configuration Struts2, mais c'est un fichier qui doit être configuré pour que Struts2 fonctionne.

Comme indiqué précédemment, ce fichier fournit un point d'entrée pour toute application Web. Le point d'entrée de l'application Struts2 sera un filtre défini dans le descripteur de déploiement (web.xml). Nous allons donc définir une entrée de la classe FilterDispatcher dans web.xml. Le fichier web.xml doit être créé sous le dossierWebContent/WEB-INF.

C'est le premier fichier de configuration que vous devrez configurer si vous démarrez sans l'aide d'un modèle ou d'un outil qui le génère (comme Eclipse ou Maven2).

Voici le contenu du fichier web.xml que nous avons utilisé dans notre dernier exemple.

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee" 
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">
   
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <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>

</web-app>

Notez que nous mappons le filtre Struts 2 à /*, et ne pas /*.actionce qui signifie que toutes les URL seront analysées par le filtre Struts. Nous en parlerons lorsque nous passerons en revue le chapitre Annotations.

Le fichier Struts.xml

le struts.xmlLe fichier contient les informations de configuration que vous allez modifier au fur et à mesure que les actions sont développées. Ce fichier peut être utilisé pour remplacer les paramètres par défaut d'une application, par exemple struts.devMode = false et d'autres paramètres définis dans le fichier de propriétés. Ce fichier peut être créé sous le dossierWEB-INF/classes.

Jetons un œil au fichier struts.xml que nous avons créé dans l'exemple Hello World expliqué dans le chapitre précédent.

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <constant name = "struts.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">
     
      <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction" 
         method = "execute">
         <result name = "success">/HelloWorld.jsp</result>
      </action>
      
      <-- more actions can be listed here -->

   </package>
   <-- more packages can be listed here -->

</struts>

La première chose à noter est le DOCTYPE. Tous les fichiers de configuration Struts doivent avoir le bon doctype comme indiqué dans notre petit exemple. <struts> est l'élément de balise racine, sous lequel nous déclarons différents packages en utilisant les balises <package>. Ici <package> permet la séparation et la modularisation de la configuration. Ceci est très utile lorsque vous avez un grand projet et que le projet est divisé en différents modules.

Par exemple, si votre projet comporte trois domaines: application_entreprise, application_client et application_employé, vous pouvez créer trois packages et stocker les actions associées dans le package approprié.

La balise package a les attributs suivants -

Sr. Non Attribut et description
1

name (required)

L'identifiant unique du package

2

extends

De quel package s'étend ce package? Par défaut, nous utilisons struts-default comme package de base.

3

abstract

S'il est marqué true, le package n'est pas disponible pour la consommation de l'utilisateur final.

4

namespace

Espace de noms unique pour les actions

le constant La balise ainsi que les attributs de nom et de valeur doivent être utilisés pour remplacer l'une des propriétés suivantes définies dans default.properties, comme nous venons de définir struts.devModepropriété. Réglagestruts.devMode La propriété nous permet de voir plus de messages de débogage dans le fichier journal.

Nous définissons action Les balises correspondent à chaque URL à laquelle nous voulons accéder et nous définissons une classe avec la méthode execute () qui sera accessible chaque fois que nous accéderons à l'URL correspondante.

Les résultats déterminent ce qui est renvoyé au navigateur après l'exécution d'une action. La chaîne renvoyée par l'action doit être le nom d'un résultat. Les résultats sont configurés par action comme ci-dessus, ou en tant que résultat «global», disponible pour chaque action d'un package. Les résultats sont facultatifsname et typeles attributs. La valeur par défaut du nom est "succès".

Le fichier Struts.xml peut grossir avec le temps et le casser par paquets est donc un moyen de le modulariser, mais Strutsoffre un autre moyen de modulariser le fichier struts.xml. Vous pouvez diviser le fichier en plusieurs fichiers xml et les importer de la manière suivante.

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <include file="my-struts1.xml"/>
   <include file="my-struts2.xml"/>
</struts>

L'autre fichier de configuration que nous n'avons pas couvert est le struts-default.xml. Ce fichier contient les paramètres de configuration standard pour Struts et vous n'auriez pas à toucher ces paramètres pour 99,99% de vos projets. Pour cette raison, nous n'entrerons pas trop dans les détails sur ce dossier. Si vous êtes intéressé, jetez un œil à ladefault.properties fichier disponible dans le fichier struts2-core-2.2.3.jar.

Le fichier Struts-config.xml

Le fichier de configuration struts-config.xml est un lien entre les composants Vue et Modèle dans le client Web, mais vous n'auriez pas à toucher ces paramètres pour 99,99% de vos projets.

Le fichier de configuration contient essentiellement les éléments principaux suivants -

Sr. Non Intercepteur et description
1

struts-config

Il s'agit du nœud racine du fichier de configuration.

2

form-beans

C'est là que vous mappez votre sous-classe ActionForm à un nom. Vous utilisez ce nom comme alias pour votre ActionForm dans le reste du fichier strutsconfig.xml, et même sur vos pages JSP.

3

global forwards

Cette section associe une page de votre application Web à un nom. Vous pouvez utiliser ce nom pour faire référence à la page réelle. Cela évite le codage en dur des URL sur vos pages Web.

4

action-mappings

C'est là que vous déclarez les gestionnaires de formulaires et ils sont également appelés mappages d'actions.

5

controller

Cette section configure les composants internes de Struts et est rarement utilisée dans des situations pratiques.

6

plug-in

Cette section indique à Struts où trouver vos fichiers de propriétés, qui contiennent des invites et des messages d'erreur

Voici l'exemple de fichier struts-config.xml -

<?xml version = "1.0" Encoding = "ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
   "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

   <!-- ========== Form Bean Definitions ============ -->
   <form-beans>
      <form-bean name = "login" type = "test.struts.LoginForm" />
   </form-beans>

   <!-- ========== Global Forward Definitions ========= -->
   <global-forwards>
   </global-forwards>

   <!-- ========== Action Mapping Definitions ======== -->
   <action-mappings>
      <action
         path = "/login"
         type = "test.struts.LoginAction" >

         <forward name = "valid" path = "/jsp/MainMenu.jsp" />
         <forward name = "invalid" path = "/jsp/LoginView.jsp" />
      </action>
   </action-mappings>

   <!-- ========== Controller Definitions ======== -->
   <controller contentType = "text/html;charset = UTF-8"
      debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/>

</struts-config>

Pour plus de détails sur le fichier struts-config.xml, veuillez consulter votre documentation struts.

Le fichier Struts.properties

Ce fichier de configuration fournit un mécanisme pour modifier le comportement par défaut du framework. En fait, toutes les propriétés contenues dans lestruts.properties le fichier de configuration peut également être configuré dans web.xml en utilisant le init-param, ainsi qu'en utilisant la balise constante dans le struts.xmlfichier de configuration. Mais, si vous souhaitez garder les choses séparées et plus spécifiques, vous pouvez créer ce fichier sous le dossierWEB-INF/classes.

Les valeurs configurées dans ce fichier remplaceront les valeurs par défaut configurées dans default.propertiesqui est contenu dans la distribution struts2-core-xyzjar. Vous pouvez envisager de modifier quelques propriétés à l’aide destruts.properties fichier -

### When set to true, Struts will act much more friendly for developers
struts.devMode = true

### Enables reloading of internationalization files
struts.i18n.reload = true

### Enables reloading of XML configuration files
struts.configuration.xml.reload = true

### Sets the port that the server is run on
struts.url.http.port = 8080

Ici, toute ligne commençant par hash (#) sera considéré comme un commentaire et ignoré par Struts 2.