En aquest article anem a veure què són els interceptors d'Struts2 mitjançant un exemple.
+
En aquest article anem a veure què són els interceptors d'Struts2 mitjançant un exemple. Anem a afegir '''interceptors''' al projecte que hem realitzat a l'article [[Struts 2: Tiles]].  
          
Struts2 proporciona un mecanisme molt potent per a controlar una sol·licitud mitjançant interceptors. Els '''interceptors''' són responsables de la major part del processament de la sol·licitud. S'invoca el controlador abans i després d'invocar l'acció, de manera que es troba entre el controlador i l'acció. Els interceptors realitzen tasques com ara registre, validació, càrrega d'arxius, etc.
 
Struts2 proporciona un mecanisme molt potent per a controlar una sol·licitud mitjançant interceptors. Els '''interceptors''' són responsables de la major part del processament de la sol·licitud. S'invoca el controlador abans i després d'invocar l'acció, de manera que es troba entre el controlador i l'acció. Els interceptors realitzen tasques com ara registre, validació, càrrega d'arxius, etc.
[[Fitxer:struts2-request-cycle.png|center]]
+
[[Fitxer:struts-2-request-cycle.png|center]]
       
Per tant els interceptors d'Struts2 eliminen tasques transversals com ara la càrrega de components d'acció i creen una separació més neta en el model MVC.
 
Per tant els interceptors d'Struts2 eliminen tasques transversals com ara la càrrega de components d'acció i creen una separació més neta en el model MVC.
   −
Struts2 ve amb una '''llista predeterminada de interceptors''' ja configurada en l'aplicació al fitxer <span style="color: green;">struts-default.xml</span>. Podem crear els nostres propis interceptors i ''plugins'' en una aplicació web basada en Struts2.
+
Struts2 ve amb una '''llista predeterminada d'interceptors''' ja configurada en l'aplicació al fitxer <span style="color: green;">struts-default.xml</span>. Podem crear els nostres propis interceptors i ''plugins'' en una aplicació web basada en Struts2.
    
El framework crea un objecte d'''ActionInvocation'' que encapsula l'acció i tots els interceptors configurats per a aquesta acció. Cada interceptor es crida abans de l'acció. Quan es crida l'acció i es genera el resultat, cada interceptor està de nou en ordre invers a com ha estat cridat per realitzar el treball de processament posterior. Els interceptors poden alterar el flux de treball d'una acció, fins i tot es pot evitar l'execució de l'acció.
 
El framework crea un objecte d'''ActionInvocation'' que encapsula l'acció i tots els interceptors configurats per a aquesta acció. Cada interceptor es crida abans de l'acció. Quan es crida l'acció i es genera el resultat, cada interceptor està de nou en ordre invers a com ha estat cridat per realitzar el treball de processament posterior. Els interceptors poden alterar el flux de treball d'una acció, fins i tot es pot evitar l'execució de l'acció.
 
  <interceptors>
 
  <interceptors>
 
     <interceptor name="mylogging"
 
     <interceptor name="mylogging"
         class="net.viralpatel.struts2.interceptor.MyLoggingInterceptor">
+
         class="struts2.interceptor.MyLoggingInterceptor">
 
     </interceptor>
 
     </interceptor>
 
     <interceptor-stack name="loggingStack">
 
     <interceptor-stack name="loggingStack">
 
</pre>
 
</pre>
    +
== Finalment...  ==
   −
== Això és tot amics  ==
+
Si executem la nostra aplicació en Eclipse i veiem els registres de la consola, ens trobarem amb les declaracions de registre que s'imprimeixen al nostre interceptor.
 +
[[Fitxer:struts_interceptors.png|center]]
   Exception encountered, of type "Error"