Académique Documents
Professionnel Documents
Culture Documents
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Crer un projet web mvc2 sous eclipse. Vrifier quun serveur dapplication est install sur votre machine Dans le projet mvc2 , crer les trois packages suivants:
Dans SR, crer une classe mtier Etudiant avec deux attributs: nom et prnom (Noublier les Getter et les Setter)
Dans DAO, crer une interface Idao qui porte la signature suivante:
Formation STRUTS1&2
09/10/2009
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Dans DAO, crer une classe DaoImpl qui implmente Idao Dans DaoImpl, crer un attribut listeEtudiant de type List.
Dans le constructeur de DaoImpl, Instancier listeEtudiant Dans SR, crer une interface Iservice avec la signature:
Dans SR, crer un attribt dao de type Idao instancier dans le constructeur de ServiceImpl
Formation STRUTS1&2
09/10/2009
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Dans DAO, crer une classe DaoImpl qui implmente Idao Dans DaoImpl, crer un attribut listeEtudiant de type List.
Dans le constructeur de DaoImpl, Instancier listeEtudiant Dans SR, crer une interface Iservice avec la signature:
Dans SR, crer un attribt dao de type Idao instancier dans le constructeur de ServiceImpl
Formation STRUTS1&2
09/10/2009
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Dans DAO, crer une classe DaoImpl qui implmente Idao Dans DaoImpl, crer un attribut listeEtudiant de type List.
Dans le constructeur de DaoImpl, Instancier listeEtudiant Dans SR, crer une interface Iservice avec la signature:
Dans SR, crer un attribt dao de type Idao instancier dans le constructeur de ServiceImpl
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
public void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { Etudiant e = new Etudiant(); e.setNom(arg0.getParameter("nom")); e.setPrenom(arg0.getParameter("prenom"));
service.saveEtudiant(e);
}
Formation STRUTS1&2
09/10/2009
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
la balise servlet
la balise servlet-mapping
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
WebContent et crer une page index.jsp <form name='monForm' action="./ajoutEtudiant" method="post"> <table> <tr> <td>nom Etudaint</td> <td><input type='text' name='nom'/></td> </tr> <tr> <td>prenomEtudaint</td> <td><input type='text' name=prenom'/></td> </tr> </table> </form>
Formation STRUTS1&2
09/10/2009
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
WebContent et crer une page index.jsp <form name='monForm' action="./ajoutEtudiant" method="post"> <table> <tr> <td>nom Etudaint</td> <td><input type='text' name='nom'/></td> </tr> <tr> <td>prenomEtudaint</td> <td><input type='text' name=prenom'/></td> </tr> </table> </form>
Formation STRUTS1&2
09/10/2009
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Remarquer que la taille est toujours 0. et que le contenu est toujours le dernier lment insr.
Rendre la classe DaoImpl singleton: 1- Dans DaoImpl, crer un attribut instance private static DaoImpl instance; 2- Dans DaoImpl, mettre le constructeur en private 3- Dans DaoImpl, crer une mthode getInstance
Formation STRUTS1&2
09/10/2009
10
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
maintenant la taille de la liste et son contenu Donner une redfinition la mthode toString() dans lobjet mtier Etudiant
Formation STRUTS1&2
09/10/2009
11
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
12
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
intercepter deux actions cration tudiant et affichage liste tudiants par un seul contrleur.
PRINCIPE MVC 2
Changer
Formation STRUTS1&2
09/10/2009
13
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
14
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
doAjoutEtudiant
private void doAjoutEtudiant(HttpServletRequest request, HttpServletResponse response) { IService service =new ServiceImpl(); Etudiant e = new Etudiant(); e.setNom(request.getParameter("nom")); e.setPrenom(request.getParameter("prenom")); service.saveEtudiant(e); }
Formation STRUTS1&2
09/10/2009
15
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
doAfficherEtudiants
private List doAfficherEtudiants(HttpServletRequest request, HttpServletResponse response) { IService service =new ServiceImpl(); Etudiant e = new Etudiant(); return service.afficherEtudiants();
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
17
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Il doit choisir la vue afficher lutilisateur Dans le code prcdent, remarquons la partie qui dirige vers les pages JSP
Formation STRUTS1&2
09/10/2009
18
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
19
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Le contrleur doit tre dvelopper pour chaque application Chaque contrleur dispose de sa propre logique Les sous contrleurs peuvent tre des mthodes comme il peuvent tre des classes.
Formation STRUTS1&2
09/10/2009
20
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Supprimer le contrleur principale Controleur.Java (Cette classe est dj intgre au JAR de Struts)
Le nom du contrleur principale de Struts est ActionServlet Existe dans le package org.apache.struts.action
Formation STRUTS1&2
09/10/2009
21
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Configurer le fichier web.xml avec le nouveau contrleur. <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> Fichier de configuration de </servlet> Struts. Permet de dfinir les actions et les vues. <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
*.do pour intercepter toutes les actions
09/10/2009 Formation STRUTS1&2 22
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Rgle : Dans Struts1, chaque formulaire HTML on associ une classe Java qui se termine avec Form dans la nomenclature
Formation STRUTS1&2
09/10/2009
23
MVC II SERVLET
La classe ActionForm
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
24
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
struts.jar commons-beanutils.jar (pour remplir laction forme) commons-collections.jar (pour le traitement des collections) commons-digester.jar (pour le parsing XML) commons-lang.jar (pour linternationalisation) commons-logging.jar (pour la gestion des traces) commons-validator.jar (pour la validation des formulaires)
Formation STRUTS1&2 09/10/2009 25
MVC II SERVLET
La classe Action
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
26
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Retourne ActionForward Prend un 1er paramtre de type ActionMapping Prend un 2me paramtre de type ActionForm Prend un 3me paramtre de type HttpServletRequest Prend un 4me paramtre de type HttpServletResponse
Chaque classe de type Action comporte la mthode execute().
Formation STRUTS1&2
09/10/2009
27
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
28
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
29
MVC II SERVLET
La classe ActionForward
STRUTS 1.X
STRUTS 2.X
Nous souhaitons donner le droit lutilisateur pour faire trois ajout seulement
Formation STRUTS1&2
09/10/2009
30
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Crer les deux pages JSP (ajout_ok.jsp, ajout_ko.jsp) avec les deux messages suivants:
Message OK = Lajout est effectu avec succs (ajout_ok.jsp) Message KO = Vous ne pouvez pas ajouter plus que 3 lments dans la liste (ajout_ko.jsp)
Formation STRUTS1&2
09/10/2009
31
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
APPLICATION laction daffichage des tudiants Suivre les tapes prcdentes pour faire les actions suivantes: 1- Afficher la liste des tudiants en utilisant le principe de Struts 1.X 2- Ajout dans (le formulaire, Les classes Java) pour pouvoir insrer et afficher un tudiant avec les donnes suivantes:
Tlphone
Formation STRUTS1&2
09/10/2009
32
MVC II SERVLET
Pour le 3me point:
STRUTS 1.X
STRUTS 2.X
Dans lexemple ci-dessous le .do nest pas optionnel et doit tre spcifier dans le forward
Formation STRUTS1&2
09/10/2009
33
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
34
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Les messages derreurs sont stocks dans des objets de types ActionErrors Ces objets sont transmis au contrleur principale via la mthode validate La mthode add() de cette classes prend une chaine de caractre et un objet de type ActionMessage
ActionMessage
Chaque message derreur correspond un objet de type ActionMessage Le constructeur de cette classe prend en paramtre une cl du message dfinie dans un fichier de proprits
Formation STRUTS1&2
09/10/2009
35
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
36
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
37
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
38
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
39
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Chaque formulaire, correspond deux classes Java. Un seul fichier struts-config.xml pour tout le projet. Pas de distinction entre les modules fonctionnels. Passage obligatoire par la mthode excute
Formation STRUTS1&2
09/10/2009
40
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Amliorations de STRUTS2:
Disparition des classes ActionForm Possibilit de cration dun fichier de configuration par module fonctionnel Possibilit dutiliser des mthodes diffrentes de excute Notion dintercepteur pour les traitements Pr/Post
Formation STRUTS1&2
09/10/2009
41
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
42
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
43
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Etapes de migrations de Struts1 vers Struts2 1- Introduction des Jars de Struts2 2- Migration pour les fichiers de configuration.
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
45
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
freemarker-2.3.8.jar Struts 2 utilise la librairie freemarker pour remplacer les valeur des objets dans les vues.
Formation STRUTS1&2
09/10/2009
46
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
xwork-2.0.5.jar et ognl-2.6.11.jar
Struts 2 utilise la librairie xWork 2 pour effectuer une conversion de type. Ainsi, toutes les erreurs de conversions classiques (String -> Long / Integer / Float / Boolean) sont automatiquement gres par cette librairie.
Formation STRUTS1&2
09/10/2009
47
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
web.xml (struts2)
Formation STRUTS1&2
09/10/2009
48
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
web.xml (struts2)
Formation STRUTS1&2
09/10/2009
49
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
struts.xml (struts2)
Formation STRUTS1&2
Struts2.X
Struts1.X
09/10/2009
50
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
51
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
52
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
53
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Etablir un lien dhritage avec BaseAction Reprendre le contenu des classes formes Modification de la mthode excute.
Formation STRUTS1&2
09/10/2009
54
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation MVCII-STRUTS-EMSI
09/10/2009
55
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
56
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
57
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Tag s:textfield
Formation STRUTS1&2
09/10/2009
59
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Tag s:select
Nous souhaitons afficher la liste des options Miage , Rseaux , Tlcom sous forme dune liste droulante. Changer le code de la page liste.jsp en utilisant le tag s:select
Formation STRUTS1&2
09/10/2009
61
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Le tag s:fielderror
Nous souhaitons informer lutilisateur par rapport tous les champs obligatoires de notre formulaire dajout
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
63
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
1- Cration dun fichier de validation qui porte le nom suivant NOM_CLASSE_ACTION -validation.xml 2- Mettre ce fichier dans le package de la classe NOM_CLASSE_ACTION 3- Modifier laction dans le fichier de configuration de Struts2 en rajoutant le rsultat INPUT
Formation STRUTS1&2
09/10/2009
64
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
65
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
66
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
67
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Le tag s:actionerror
Nous souhaitons que les noms des tudiants commencent obligatoirement par M. , Mlle ou Mme
Formation STRUTS1&2
09/10/2009
68
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
1- Modification dans la mthode de laction en rajoutant une condition sur le nom. 2- Modifier laction dans le fichier de configuration de Struts2 en rajoutant le rsultat ERROR 3- Modification de la page JSP en introduisant le tag s:actionerror
Formation STRUTS1&2
09/10/2009
69
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
70
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
71
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
Formation STRUTS1&2
09/10/2009
72
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:set
permet de modifier la valeur dune variable
Formation STRUTS1&2
09/10/2009
73
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:iterator
Faire des itrations sur une collection. Modifier la page liste.jsp
Formation STRUTS1&2
09/10/2009
74
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:iterator
Faire des itrations sur une collection. Modifier la page ListeEtudiantAction.java
Formation STRUTS1&2
09/10/2009
75
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:append
Fusion de plusieurs collections. Modifier ListeEtudiantAction.j ava
Formation STRUTS1&2
09/10/2009
76
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:append
Fusion de plusieurs collections. Modifier la page liste.jsp
Formation STRUTS1&2
09/10/2009
77
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:generator
Construire des itrations sur des lments dune chaine de caractre StringTokenizer Modifier la page liste.jsp
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:generator
Exploitation du tag s:generator par lattribut id Modifier la page liste.jsp
Formation STRUTS1&2
09/10/2009
79
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:generator
Exploitation du tag s:generator par lattribut id Modifier la page liste.jsp
Formation STRUTS1&2
09/10/2009
80
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:merge
Fusion de deux collections C1et C2. Litration se fait en exploitant llment i de C1 puis llment i de C2 etc. Modifier la page liste.jsp
Formation STRUTS1&2
09/10/2009
81
MVC II SERVLET
STRUTS 1.X
STRUTS 2.X
s:bean
Afficher les attributs dun objet bean Modifier la page liste.jsp
Formation STRUTS1&2
09/10/2009
82