22. Le développement d'applications web 24.  Java Server Faces et Eclipse Imprimer Sommaire Consulter avec table des matières Développons en Java avec Eclipse   v 0.80  
Copyright (C) 2003-2007 Jean-Michel DOUDOUX   

 

23. Struts et Eclipse

 

chapitre 2 3

 

Struts est un framework pour applications web développé par le projet Jakarta de la fondation Apache. C'est la plus populaire des frameworks pour le développement d'applications web avec Java .

Struts met en oeuvre le modèle MVC 2 (Modèle / Vue / Contôleur) basé sur une seule servlet et des JSP pour chaque application. L'application de ce modèle permet une séparation en trois partie distinctes de l'interface, des traitements et des données de l'application.

Struts se concentre sur la vue et le contrôleur. L'implémentation du modèle est laissée libre aux développeurs : ils ont le choix d'utiliser des java beans, un outil de mapping  objet/relationnel ou des EJB.

Pour le contrôleur, Struts propose une unique servlet par application qui lit la configuration de l'application dans un fichier au format XML. Cette servlet reçoit toutes les requêtes de  l'utilisateur concernant l'application. En fonction du paramètrage, il instancie un objet de type Action qui contient les traitements et renvoie une valeur particulière à la servlet. Ceci lui permet de déterminer la JSP qui affichera le résultat à l'utilisateur.

Il existe un projet open source nommé Easy Struts qui est un plug-in dont le but est de faciliter la mise en oeuvre de Struts avec Eclipse. Ce plug-in très intéressant et pratique ne semble malheureusement plus évoluer : il ne fonctionne d'ailleurs pas avec les versions 3.x de d'Eclipse.

Cette section va mettre en oeuvre les outils suivants sous Windows :

Outil

Version

Rôle

JDK

1.4.2_03

 

Eclipse

2.1

IDE

Tomcat

5.0.28

conteneur web

plug-in Tomcat de Sysdeo 

3

arrêt et démarrage de Tomcat

plug-in Easy Struts

0.6.4

faciliter l'utilisation de Struts

 

23.1. Le plug-in Easy Struts

Le site officiel du plug-in Easy Struts est à l'url : http://easystruts.sourceforge.net/

Ce plug-in permet notamment de faciliter la réalisation de certaines tâches et la création des éléments suivants :

 

23.1.1. Installation et configuration d'Easy Struts

Il y a deux façons pour installer Esay Struts :

Editez les préférences (menu Fenêtre/Préférences) et sélectionnez Easy Struts.

L'onglet « Style » permet de définir des comportements par défaut.

L'onglet « Struts 1.0 » et « Struts 1.1 » permet de fournir l'emplacement requis par la version de Struts désignée par l'onglet.

Il faut impérativement ajouter les fichiers .jar requis pas Struts ainsi que les fichier .tld des bibliothèques personnalisées de Struts.

Une fois tous les paramètres renseignés, cliquez sur le bouton « Appliquer » puis sur le bouton « OK ».

Il faut créer un projet de type « Java/Projet Tomcat » qui va contenir l'application web.

Cliquez sur le bouton « Suivant »

Saisissez le nom du projet, par exemple « test_struts » et cliquez sur le bouton « Suivant ».

Cliquez sur le bouton « Fin »

La structure du projet est la suivante :

Il faut sélectionner les propriétés du projet. Sélectionnez l'option « Easy Struts » 

Cliquez sur le bouton « Add Struts support to project ... ». Une boîte de dialogue s'ouvre pour permettre la sélection des options

Si les paramètres ne sont pas correctement renseignés, un message d'erreur est affiché

Il saisir les informations nécessaire à la configuration de l'application.

Renseignez les informations nécessaires et cliquez sur le bouton « Fin ». Les fichiers sont copiés et les propriétés sont mises à jour.

Cliquez sur le bouton « OK ».

Le fichier web.xml généré est le suivant :

Exemple :
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> 
<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> 
        <init-param> 
            <param-name>debug</param-name> 
            <param-value>3</param-value> 
        </init-param> 
        <init-param> 
            <param-name>detail</param-name> 
            <param-value>3</param-value> 
        </init-param> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>action</servlet-name> 
        <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 
</web-app>

Le fichier struts-config.xml généré est le suivant :

Exemple :
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts-config PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> 
<struts-config> 
    <data-sources /> 
    <form-beans /> 
    <global-exceptions /> 
    <global-forwards /> 
    <action-mappings /> 
    <controller /> 
    <message-resources parameter="com.jmd.test.struts.ApplicationResources" /> 
</struts-config>

La structure du projet est alors la suivante :

Il faut ensuite créer une nouvelle entité de type « Java / Easy Struts / Easy Action associated with form ».

Cliquez sur le bouton « Suivant ». La page suivante permet de renseigner les caractéristiques de la page.

Renseignez le « Use case » avec le nom logique de la page, par exemple « Login ». Automatiquement les champs Form name et Form Type sont pré-renseignés en fonction du « Use Case » saisi et des propriétés saisies pour Struts.

Pour ajouter des propriétés, il suffit de cliquer sur le bouton « Add »

Il suffit alors de renseigner les caractéristiques de la donnée : le nom, le type, la valeur initiale et le mode de saisie dans la JSP.

Pour valider chaque donnée, il faut cliquer sur le bouton « OK ». Une fois la saisie terminée, il faut cliquer sur le bouton « Fin ».

Dans l'exemple de cette section, deux données sont ajoutées :

Cliquez sur le bouton « suivant »

La page suivante permet de saisir les renseignements sur la classe Action qui sera générée.

Les divers renseignements saisis vont permettre de créer la JSP et de modifier le fichier struts-config.xml

Une fois les données saisies, cliquez sur le bouton « Suivant ».

La page suivante permet de préciser les renvois et les captures d'exceptions associés pour l'Action.

Pour ajouter un renvoi (forward), il faut cliquer sur le bouton « Add » correspondant.

Il faut alors saisir le nom et le chemin du renvoi.

Une fois les renvois ajoutés, cliquez sur le bouton « Fin ».

Si nécessaire, procédez de la même façon avec les captures d'exceptions.

Cliquez sur le bouton « Fin ».

Le fichier struts-config.xml est modifié pour tenir compte des éléments paramétrés dans l'assistant.

Exemple :
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts-config PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" 
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> 
<struts-config> 
    <!-- ========== Data Source Configuration =============================== --> 
    <data-sources /> 
    <!-- ========== Form Bean Definitions ================================== --> 
    <form-beans> 
        <form-bean name="loginForm" type="com.jmd.test.struts.form.LoginForm"> 
            <form-property name="motDePasse" type="java.lang.String" /> 
            <form-property name="nom" type="java.lang.String" /> 
        </form-bean> 
    </form-beans> 
    <!-- ========== Global Exception Definitions ============================== --> 
    <global-exceptions /> 
    <!-- ========== Global Forward Definitions =============================== --> 
    <global-forwards /> 
    <!-- ========== Action Mapping Definitions =============================== --> 
    <action-mappings> 
        <action 
            attribute="loginForm" 
            input="/form/login.jsp" 
            name="loginForm" 
            path="/login" 
            type="com.jmd.test.struts.action.LoginAction"> 
            <forward name="succes" path="/form/accueil.jsp" /> 
            <forward name="echec" path="/form/login.jsp" /> 
        </action> 
    </action-mappings> 
    <!-- ========== Controller Configuration ================================ --> 
    <controller /> 
    <!-- ========== Message Resources Definitions ============================ --> 
    <message-resources parameter="com.jmd.test.struts.ApplicationResources" /> 
    <!-- ========== Plug Ins Configuration ================================= --> 
</struts-config>

Le fichier login.jsp est créé dans le répertoire form

Exemple :
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>  
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>  
<html>  
   <head> 
         <meta name="Generator" content="Easy Struts Xslt generator for Eclipse."> 
         <title>Struts Form for loginForm</title> 
   </head> 
   <body> 
         <html:form action="/login"> 
               motDePasse : <html:text property="motDePasse"/>
               <html:errors property="motDePasse"/></br> 
               nom : <html:text property="nom"/><html:errors property="nom"/></br> 
               <html:submit/><html:cancel/> 
         </html:form> 
   <body> 
</html>

Il faut modifier le fichier LoginForm.java pour mettre le code à exécuter lors de la validation des données dans la méthode validate() à la place de la levée de l'exception de type UnsupportedOperationException

Exemple :
  public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 
    ActionErrors erreurs = new ActionErrors(); 
    if (nom == null || nom.equals("")) { 
      erreurs.add("nom", new ActionError("error.login.nommanquant")); 
    } 
    return erreurs; 
  }

Il faut ajouter une clause d'importation sur la classe org.apache.struts.action.ActionError

Il faut modifier le fichier LoginAction.java pour mettre le code a éxécuter lors des traitements dans la méthode execute() à la pace de la levée de l'exception de type UnsupportedOperationException

Exemple :
  public ActionForward execute(ActionMapping mapping, ActionForm form, 
          HttpServletRequest request, HttpServletResponse response) throws Exception { 
    ActionForward resultat = null; 
    LoginForm loginForm = (LoginForm) form; 
    String nom = loginForm.getNom(); 
    String mdp = loginForm.getMotDePasse(); 
    request.setAttribute("nom", nom); 
    if (nom.equals("test") && mdp.equals("test")) { 
      resultat = (mapping.findForward("succes")); 
    } else { 
      resultat = (mapping.findForward("echec")); 
    } 
    return resultat; 
  }

Il faut modifier le fichier ApplicationResources.properties se trouvant dans le repertoire WEB-INF/classes/com/jmd/test/struts

Exemple :
 # Resources for parameter 'com.jmd.test.struts.ApplicationResources'  
 # Project P/test_struts  
 errors.header=<ul>  
 errors.footer=</ul>  
 error.login.nommanquant=<li>La saisie du nom de l'utilisateur est obligatoire</li>

Il ensuite créer une nouvele entité de type  type « Java / Easy Struts / Easy Form » dont le « Use Case » sera « Accueil ».

Il faut modifier le fichier form/accueil.jsp généré.

Exemple :
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>   
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>   
<html>   
  <head>  
    <meta name = "Generator" 
          content = "Easy Struts Xslt generator for Eclipse.">  
    <title>Struts Form for accueilForm</title>  
  </head>  
  <body>  
    <H1>Bienvenue<logic:present name="nom" scope="request">  
      <bean:write name="nom" scope="request"/>  
      </logic:present></H1>  
  <body>  
</html> 

Les fichiers composants l'application sont les suivants :

 

23.1.2. L'exécution de l'application

Il faut lancer Tomcat en cliquant sur le bouton

Un clic sur le bouton « Submit » sans saisir de nom affiche le message d'erreur

La validation avec un nom différent de test réaffiche la page

La validation avec le nom « test » et le mot de passe « test » affiche la page d'accueil

 

23.1.3. La modification du fichier struts-config.xml

EasyStrusts propose un éditeur dédié à la mise à jour du fichier de configuration de Struts

Cet éditeur propose deux onglets : « Easy Struts » pour modifier les informations avec une interface et « Source » qui permet de visualiser et de modifier directement le fichier xml.

L'onglet « Easy Struts » de compose de deux parties :

La partie de gauche permet une navigation dans les élements qui composent le fichier xml et la sélection d'un élément.

La partie de droite permet de modifier l'élément sélectionné.

 


  22. Le développement d'applications web 24.  Java Server Faces et Eclipse Imprimer Sommaire Consulter avec table des matières Développons en Java avec Eclipse   v 0.80  
Copyright (C) 2003-2007 Jean-Michel DOUDOUX