Tutoriel Struts 2 : intercepteurs

/////Tutoriel Struts 2 : intercepteurs

logo-struts-2.pngMaîtrisez les intercepteurs Struts 2. Comprenez le rôle des intercepteurs dans la flexibilité du framework Struts 2. Identifiez les 3 grandes catégories d’intercepteurs. Comprenez la notion de ‘pile d’intercepteur’. Comprenez le role de la classe ActionInvocation et la relation entre intercepteur et Action Struts 2.Associez un intercepteur à une action Struts 2. Enfin, créez votre propre intercepteur d’authentification.

Objis, spécialiste de la formation Java, est heureux de vous offrir ce
tutoriel, extrait de séances pratiques de la formation Struts 2 dispensée par Objis.

Les + objis

 70% de travaux pratiques

 Clé USB avec tous les outils utilisés + Corrigés TPs

 Bilan pédagogique individuel + conseils

Liens utiles

 Documentation Struts 2

 API Struts 2

Prérequis, outils et versions

 JDK 6

 Struts 2.3.1.2

 Eclipse JEE Indigo

 Tomcat 7

Objectifs

 comprendre les intercepteurs struts 2 : types, roles.

 comprendre la notion d ‘pile d’intercepteurs

 créer un exemple d’intercepteur et le configurer

Programme

 Partie 1 : Intercepteur utilitaires : TIMER et LOGGER’

 Partie 2 : création et configuration intercepteur

 Partie 3 : Intercepteurs de transfert de données : PARAMS, STATIC-PARAMS, AUTOWIRING, SERVLET-CONFIG, FILEUPLOAD

 Partie 4 : Intercepteur de Workflow : WORKFLOW, VALIDATION, PREPARE, MODELDRIVEN

 Partie 5 : Intercepteur EXCEPTION

 Partie 6 : Intercepteur TOKEN

Durée

2h.

Rappel : Architecture Struts 2

architecture_struts2.png

 Expliquez.

 Expliquez la configuration suivante :

default-stack

 D’où vient cette configuration ? à quoi sert cette configuration ? Quand est’elle activée ?

struts-default

 Où se trouve le fichier struts-default.xml ?

 Citez 3 intercepteurs ne faisant pas partie de la pile d’intercepteurs ‘defaultStack’.

 Question : qu’est ce que l’interface ActionInvocation de Struts 2 ?

actioninvocation-struts2

INFO : l’ActionInvocation encapsule l’éxécution d’une action avec ses intercepteurs (et Results) associés.

actioninvocation-struts2-javadoc

 Qu’appelle t’on phase de ‘péprocessing’ et ‘postprocessing’ d’un intercepteur

 Expliquez le rôle de la méthode Invoque ? Qui appelle cette méthode ? Dans quel cas ?

 Quelle méthode permet de récupérer le contexte de l’Action ?

 Quelle méthode permet de récupérer la ValueStack ?

 Quelle méthode permet de récupérer le Result ?

Partie 1 : Intercepteur utilitaires : TIMER et LOGGER’

 Identifiez la déclaration des intercepteurs ‘logger’ et ‘timer’ dans struts-default.xml

 Ces intercepteurs font’ils parti de la ‘defaultStack’ ?

 Analysez la configuration suivante :

mise-en-oeuvre-intercepteurs-timer-log-3

 Expliquez les lignes 14, 15, 16, 17, 18 et 35

 Analysez les logs suivants :

mise-en-oeuvre-intercepteurs-timer-log-2

 Expliquez

Partie 2 : création et configuration d’un intercepteur

2 étapes :

— Etape 1 : codage

— Etape 2 : configuration

Etape 1 : codage de l’intercepteur

 Analysez le code suivant :

mise-en-oeuvre-intercepteur-perso-log-1

 Expliquez les lignes 6, 10, 25, 28

 Expliquez les lignes 12, 16, 22

Etape 1 : configuration de l’intercepteur dans la stack

mise-en-oeuvre-intercepteur-perso-log-2

 Analysez les logs

mise-en-oeuvre-intercepteur-perso-log-5

 Expliquez.

Partie 3 :Intercepteurs de transfert de données : PARAMS, STATIC-PARAMS, AUTOWIRING, SERVLET-CONFIG, FILEUPLOAD

Intercepteur ‘PARAMS’

L’intercepteur ‘params’ gère le transfert les paramètres d’une requête struts2 dans les attributs des objets se trouvant dans la ValueStack.

 Identifiez la déclaration de l’intercepteur ‘params’ dans struts-default.xml . Quelle est la classe qui gère cet intercepteur ?

 Cet intercepteur fait’il parti de la defaultStack ?

Intercepteur ‘STATIC-PARAMS’

 Identifiez la déclaration de l’intercepteur ‘static-params’ dans struts-default.xml . Quelle est la classe qui gère cet intercepteur ?

L’intercepteur ‘static-params’ transfert les paramètres de la configuration de l’action dans les attributs des objets se trouvant dans la ValueStack.

 Cet intercepteur est’il placé avant ou après l’intercepteur ‘params’ dans la pile ? pour quoi ?.

 L’ordre des intercepteurs est’il important ?

 Cet intercepteur fait’il parti de la defaultStack ?

Intercepteur ‘AUTOWIRING’

 Identifiez la déclaration de l’intercepteur ‘autowiring’ dans struts-default.xml .

 Quelle est la classe qui gère cet intercepteur ?

Cet intercepteur joue un role clé dans l’intégration entre Struts 2 et Spring. En particulier, il permet de gérer l’Autowiring de propriétés de beans Spring.

 Cet intercepteur fait’il parti de la defaultStack ?

Intercepteur ‘SERVLET-CONFIG’

 Identifiez la déclaration de l’intercepteur ‘servlet-config’ dans struts-default.xml . Quelle est la classe qui gère cet intercepteur ?

Cet intercepteur fournit un moyen ‘propre’ d’injecter des objets de l’API Servlet dans vos actions.

En particulier, les interfaces suivantes permettent à cet intercepteur de rendre disponible les objets clés :

— l’implémentation de l’interface ‘ServletContextAware’ par votre action vous permet d’avoir accès via le framework de la classe ServletContexte

— ServletRequestAware –> HttpServletRequest

— ServletResponseAware — HttpServletResponse

— ParameterAware –> map (clé/valeur) paramètres requête

— RequestAware –> map attributs de requête

— SessionAware –> map attributs de session

— ApplicationAware –> map propriétés scope application

— PrincipalAware –> l’Objet Principal (== user d’un point de vu Sécurité)

Chacune de ces interfaces contient une méthode ‘setter’ à travers laquelle le framework vous ‘injecte’ l’objety d’ésiré.

A VOUS DE JOUER : En utilisant l’interface ‘ServletRequestAware’ Récupérez l’information entrée par l’utilisateur dans le formulaire HelloObjis.

La combinaison de l’intercepteur timer et de la récupération du paramètre produit dans les logs :

mise-en-oeuvre-intercepteur-servlet-config

REMARQUE : ce n’est pas une bonne pratique d’utiliser ces interfaces dans vos actions car cela entraine un couplage fort de vos actions à l’API servlet.

Mieux vaut passer par la valueStack et le langage OGNL.

Intercepteur ‘FILEUPLOAD’

 Identifiez la déclaration de l’intercepteur ‘fileupload’ dans struts-default.xml . Quelle est la classe qui gère cet intercepteur ?

Cet intercepteur transforme le fichier et les metadata d’une requête multipart en données gérable par l’intercepteur PARAMS.

Partie 4 : Intercepteur de Workflow : WORKFLOW, VALIDATION, PREPARE, MODELDRIVEN

WORKFLOW

Cet intercepteur travaille en collaboration avec votre action pour agir sur le workflow REQUETE – ACTION – RESULT.

Par exemple, en combinaison de l’implémentation d’interface Validatable, il permet de réaliser validation ‘basique’.

VALIDATION

Validation déclarative ‘haut de gamme’ , et non programmative comme l’approche de validation’basique’ basée sur methode validate().

Se base sur la configuration en xml et en annotation pour valider les champs formulaire de rquête. L’interface ValidationAware et l’intercepteur WORKFLOW sont nécessaires.

PREPARE

Technique pour ajouter votre propre workflow avant l’exécution d’une action.

permet d’appeler une méthode prepare() dans l’action (via interface Preparable). D’autre méthodes de la forme prepareNomMethode() peuvent être appelé dans le cas où il y a d’autre point d’entrées que la méthode execute().

MODELDRIVEN

Altère le workflow en appelant la méthode getModel() de l’action (via interface ModelDriven.) et met l’objet retourné dans la ValueStack.

Partie 5 : Intercepteur EXCEPTION

En premier dans la pile par défaut. Cet intercepteur centralise le traitement des exceptions en remplissant un objet ExceptionHolder qu’il place dans la ValueStack.

La page d’erreur pourra afficher alors l’exception. La page d’erreur se configure avec les balises global-results, result, global-exception-mappings et exception-mapping.

exception

Ci-dessous toutes les exceptions du types java.lang.Exception entraineront l’affichage d’une page d’erreur spécifique.

— > Mettez en oeuvre cette configuration dans HelloStruts2

Partie 6 : Intercepteur TOKEN

gère un token unique dans les paramètres de la request pour vérifier si la page serait appelé une deuxième fois.

REMARQUES sur les Stacks

Les Stack intégrées:

 Il faut utiliser une autre que celle par défaut seulement si il y a un impératif.

 Les stack plus petites sont faites pour être modulaire et en créer de plus grandes.

 Les intercepteurs inutilisés de la stack n’affectent pas les performances.

Correction

HelloStruts2-intercepteurs

2018-01-29T17:14:30+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java