présentation:
Struts est un framework qui fourni à la fois une organisation MVC de l'application web,
mais aussi un framework de présentation puisqu'il contient de nombreuses taglib permettant de gérer efficassement l'affichage.
Nous allons dans ce document créer pas à pas une mini application Struts permettant de gérer un carnet d'adresse.
Nous ne verrons pas comment utiliser les taglib, mais uniquement comment utiliser struts pour décomposer l'application selon un modèle mvc.
Pré-requis:
Eclipse et le plug ins WTP (Web Tool Plateform)
Struts
Etape1: Identifier les "use-case" et créer les actions correspondantes.
Dans le cas de notre carnet d'adresse, on va se contenter de 4 cas d'utilisation: lire, modifier, ajouter, supprimer une fiche.
Les cas d'utilisations sont représentés dans Struts par des actions, c'est à dire des classes héritants de la classe "org.apache.struts.action.Action".
Nous allons donc créer nos 4 classes Action qui doivent respecter la structure minimale suivante:
public class DisplayAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) {
return mapping.findForward("ok");
}
}
note1: cette action ne fais absolument rien, si ce n'est une redirection qu'on expliquera plus tard.
note2: par convention, une classe Action fini toujours par "Action" et doit porter un nom explicite.
Nos quatre actions pourraient s'appeler DisplayAction, AddAction, ModifAction et RemoveAction.
Etape 2: Mapper les Actions définies
Il s'agit maintenant de fournir une URL qui sera redirigée vers une action.
Le choix le plus courant est de spécifier dans le fichier web.xml que toutes les requetes terminants par .do seront redirigées vers la servlet Action de struts.
Ainsi, l'URL http://localhost:8080/monProjet/ajouteFiche.do sera gérée par struts.
Pour cela, ajouter le code xml suivant dans web.xml à en dessous de l'élément racine "web-app".
Il faut maintenant indiquer à struts que "ajouteFiche.do" correspond à l'action AddAction.
pour cela, on créé un fichier struts-config.xml dans le répertoire web-inf.
Etape 3: gérer l'affichage
Notre application est inutilisable pour le moment puisque nous n'affichons rien dans le navigateur.
La présentation sera effectuée par de simple pages JSP.
Vous vous souvenez du mystérieux "return mapping.findForward("ok");" dans la méthode execute de notre Action?
nous allons pouvoir rediriger grâce à cette méthode l'action vers une JSP.
note: on peut rediriger vers différente JSP en fonction de certaines conditions.
Par exemple si un couple login/mot de passe est bon:
return mapping.findForward("success");
mais si ce couple login/mot de passe est incorrect:
return mapping.findForward("fail");
Bien sur nous devont spécifier dans le fichier struts-config.xml à quelle page jsp correspond le parametre qu'on à spécifié à findForward("ok");.
Voici les informations a mettre dans le fichier WEB-INF/struts-config.xml:
Etape 3: Effectuer les traitements métiers:
Les traitements sont très simples a effectuer: lire une fiche, écrire une fiche, modifier une fiche et supprimer une fiche.
commençons par créer notre objet métier: une classe "bo.Personne" qui sera un javabean dont les propriétés sont String nom, et String numero.
puis une classe "dao.PersonneDAO" qui gèrera l'acces à nos "Personne" enregistrées.
Afin qu'une seule instance de "dao.PersonneDAO" soit chargée, on va utiliser le design pattern singleton:
public class PersonneDAO {
static PersonneDAO pDAO;
Vector listePersonnes;
private PersonneDAO(){
listePersonnes = new Vector();
}
public static PersonneDAO getInstance(){
if (pDAO==null) pDAO = new PersonneDAO();
return pDAO;
}