Technologie Web
       Struts 2




  Le 3 Décembre 2010
Plan




 1. Struts 2
   2. Exercice
Présentation
• Architecture simple
• Facile à apprendre
• Architecture MVC
• Possède beaucoup de composants
MVC
Cycle de vie
Action / Interceptor / Result
Les Actions
• Doivent étendre de ActionSupport
• Contiennent les données du model
• Sont mappées sur les URLS
• Se configurent dans le fichier struts.xml
  • Exemple
<package name="monPackage" extends="struts-default">
<action name=“ uri“ class=“ class“ method=“ method">
 <result name=” success” >destination.jsp</result>
</action>
<package>
Wildcard Mapping
<package name="exemple" extends="struts-default">
  <action name=“ contact_*" class=“ fr.ima.uco.ContactAction"
method=“ {1} ">
     <result>/contact/{1}.jsp</result>
  </action>
<package>


http://localhost:8080/exemple/contact_list.action
La classe Action
public class ContactAction extends ActionSupport {
    private Contact contact;
    private ContactService service;


    public String delete(){ … }
    public String update(){…}
    // GETTER & SETTER
}
La validation
• Form
<s:textfield key="age"/>

• Action
private int age; get/set

• Validator <ActionClassName>-validation.xml
<field name="age">
<field-validator type="int">
<param name="min">13</param>
<param name="max">19</param>
<message>Only people ages 13 to 19 allowed</message>
</field-validator>
</field>
Validator Types
• Conversion
• date
• email
• short – int – long - double
• regex <takes a regular expression>
• required
• requiredstring
• stringlength
• url
• visitor - conditionalvisitor
• expression
Exemple de validation
• <field name=“password">
•   <field-validator type="expression">
•     <param name="expression">
•            password.equals(password2)
•     </param>
•   <message>
•     Password 2 must equal ${password}
•   </message>
• </field-validator>
• </field>
Quelques tags importants
• Affichage d’une propriété de bean :
  • <s:property value="…" />
• Iteration sur des propriétés
  • <s:iterator value="…">
• Construction d’un lien avec paramètres
  • <s:url id="url" action="…"/>
  • <s:param/>
  • <s:a href="…">
• Formulaires
  • <s:form action="…" method="…"/>
  • <s:textfield name="…"/>
  • <s:submit value="…"/>
• Expressions OGNL %{...} dans les attributs
Quelques tags importants
• Affichage d’une propriété de bean :
  • <s:property value="…" />
• Iteration sur des propriétés
  • <s:iterator value="…">
• Construction d’un lien avec paramètres
  • <s:url id="url" action="…"/>
  • <s:param/>
  • <s:a href="…">
• Formulaires
  • <s:form action="…" method="…"/>
  • <s:textfield name="…"/>
  • <s:submit value="…"/>
• Expressions OGNL %{...} dans les attributs
Plan




   1. Struts 2
 2. Exercice
Application carnet d’adresse

• Fonctions implémentée en 3 itération :
  1) Listing des données dans les propretés
  2) Formulaire de recherche dans la liste
  3) Formulaire de mise à jour, création, suppression


• Données d’entrée
  • Application Web de base
  • Classe de DAO
Etape 1 : Intégrer Struts 2
• Ajouter le filtre Struts :
    •Sur une nouvelle application Tomcat
    •Ajouter les jars struts dans WEB-INF/lib
    •Paramétrer le filtre dans le web.xml :
     <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>

                                FilterDispatcher Struts2
                                            …
                                    HttpServletFilter 2
                                    HttpServletFilter 1


                    Requête HTTP
Etape 2 : Paramétrage des
                      actions
                                                •Fichier struts.xml dans le classpath.
                    Contrôleur
                                                •Créer la classe action ListAction dérivant
Identification et                               de ActionSupport
instanciation du
Bean d’action                                   •Créer de vues exemple : list.jsp et
                                                error.jsp

                                 FilterDispatcher Struts2
                                            …
                                    HttpServletFilter 2
                                    HttpServletFilter 1


                       Requête HTTP
Etape 2 : Paramétrage de struts

                                                     •Les propriétés du Bean sont initialisées
                    Contrôleur                       par les paramètres de la requête.
                     Initilisation
Identification et
                     à partir des                    •La conversion est automatique par Struts.
instanciation du
                     paramètres de
Bean d’action
                     requête




                                     FilterDispatcher Struts2
                                                …
                                        HttpServletFilter 2
                                        HttpServletFilter 1


                       Requête HTTP
Struts 2 : Cycle de vie de
                       requête
                                   Modèle
                                                     •Passer les infos au travers des propriétés
                                                     du Bean action : disponibles dans la vue
                    Contrôleur
                     Initilisation                   •Eviter d’ajouter de données dans la
Identification et                  Appel de la
instanciation du
                     à partir des
                                   methode           request !
                     paramètres de
Bean d’action                      execute()
                     requête                         •Créer une methode execute qui affiche les
                                                     données.

                                     FilterDispatcher Struts2
                                                 …
                                         HttpServletFilter 2
                                         HttpServletFilter 1


                       Requête HTTP
Struts 2 : Cycle de vie de
                       requête
                                   Modèle

                    Contrôleur                                     Vue
                     Initilisation
Identification et                  Appel de la
                     à partir des                              Génération de la
instanciation du                   methode
                     paramètres de                             sortie
Bean d’action                      execute()
                     requête

                                        Nom du Result
                                        (vue)


                                     FilterDispatcher Struts2         • Ajouter une vue (Result) au
                                                                      Struts.xml
                                                   …
                                         HttpServletFilter 2
                                         HttpServletFilter 1          • list.jsp JSP correspondante.

                       Requête HTTP

technologie web- part4

  • 1.
    Technologie Web Struts 2 Le 3 Décembre 2010
  • 2.
    Plan  1. Struts2 2. Exercice
  • 3.
    Présentation • Architecture simple •Facile à apprendre • Architecture MVC • Possède beaucoup de composants
  • 4.
  • 5.
    Cycle de vie Action/ Interceptor / Result
  • 6.
    Les Actions • Doiventétendre de ActionSupport • Contiennent les données du model • Sont mappées sur les URLS • Se configurent dans le fichier struts.xml • Exemple <package name="monPackage" extends="struts-default"> <action name=“ uri“ class=“ class“ method=“ method"> <result name=” success” >destination.jsp</result> </action> <package>
  • 7.
    Wildcard Mapping <package name="exemple"extends="struts-default"> <action name=“ contact_*" class=“ fr.ima.uco.ContactAction" method=“ {1} "> <result>/contact/{1}.jsp</result> </action> <package> http://localhost:8080/exemple/contact_list.action
  • 8.
    La classe Action publicclass ContactAction extends ActionSupport { private Contact contact; private ContactService service; public String delete(){ … } public String update(){…} // GETTER & SETTER }
  • 9.
    La validation • Form <s:textfieldkey="age"/> • Action private int age; get/set • Validator <ActionClassName>-validation.xml <field name="age"> <field-validator type="int"> <param name="min">13</param> <param name="max">19</param> <message>Only people ages 13 to 19 allowed</message> </field-validator> </field>
  • 10.
    Validator Types • Conversion •date • email • short – int – long - double • regex <takes a regular expression> • required • requiredstring • stringlength • url • visitor - conditionalvisitor • expression
  • 11.
    Exemple de validation •<field name=“password"> • <field-validator type="expression"> • <param name="expression"> • password.equals(password2) • </param> • <message> • Password 2 must equal ${password} • </message> • </field-validator> • </field>
  • 12.
    Quelques tags importants •Affichage d’une propriété de bean : • <s:property value="…" /> • Iteration sur des propriétés • <s:iterator value="…"> • Construction d’un lien avec paramètres • <s:url id="url" action="…"/> • <s:param/> • <s:a href="…"> • Formulaires • <s:form action="…" method="…"/> • <s:textfield name="…"/> • <s:submit value="…"/> • Expressions OGNL %{...} dans les attributs
  • 13.
    Quelques tags importants •Affichage d’une propriété de bean : • <s:property value="…" /> • Iteration sur des propriétés • <s:iterator value="…"> • Construction d’un lien avec paramètres • <s:url id="url" action="…"/> • <s:param/> • <s:a href="…"> • Formulaires • <s:form action="…" method="…"/> • <s:textfield name="…"/> • <s:submit value="…"/> • Expressions OGNL %{...} dans les attributs
  • 14.
    Plan 1. Struts 2  2. Exercice
  • 15.
    Application carnet d’adresse •Fonctions implémentée en 3 itération : 1) Listing des données dans les propretés 2) Formulaire de recherche dans la liste 3) Formulaire de mise à jour, création, suppression • Données d’entrée • Application Web de base • Classe de DAO
  • 16.
    Etape 1 :Intégrer Struts 2 • Ajouter le filtre Struts : •Sur une nouvelle application Tomcat •Ajouter les jars struts dans WEB-INF/lib •Paramétrer le filtre dans le web.xml : <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> FilterDispatcher Struts2 … HttpServletFilter 2 HttpServletFilter 1 Requête HTTP
  • 17.
    Etape 2 :Paramétrage des actions •Fichier struts.xml dans le classpath. Contrôleur •Créer la classe action ListAction dérivant Identification et de ActionSupport instanciation du Bean d’action •Créer de vues exemple : list.jsp et error.jsp FilterDispatcher Struts2 … HttpServletFilter 2 HttpServletFilter 1 Requête HTTP
  • 18.
    Etape 2 :Paramétrage de struts •Les propriétés du Bean sont initialisées Contrôleur par les paramètres de la requête. Initilisation Identification et à partir des •La conversion est automatique par Struts. instanciation du paramètres de Bean d’action requête FilterDispatcher Struts2 … HttpServletFilter 2 HttpServletFilter 1 Requête HTTP
  • 19.
    Struts 2 :Cycle de vie de requête Modèle •Passer les infos au travers des propriétés du Bean action : disponibles dans la vue Contrôleur Initilisation •Eviter d’ajouter de données dans la Identification et Appel de la instanciation du à partir des methode request ! paramètres de Bean d’action execute() requête •Créer une methode execute qui affiche les données. FilterDispatcher Struts2 … HttpServletFilter 2 HttpServletFilter 1 Requête HTTP
  • 20.
    Struts 2 :Cycle de vie de requête Modèle Contrôleur Vue Initilisation Identification et Appel de la à partir des Génération de la instanciation du methode paramètres de sortie Bean d’action execute() requête Nom du Result (vue) FilterDispatcher Struts2 • Ajouter une vue (Result) au Struts.xml … HttpServletFilter 2 HttpServletFilter 1 • list.jsp JSP correspondante. Requête HTTP