Exemple d'intercepteur Struts 2 execAndWait
Téléchargez-le -Struts2-ExecAndWait-Interceptor-Example.zip
Struts 2 est livré avec un intercepteur «Execute and Wait» très intéressant nommé «execAndWait», c'est un intercepteur très pratique pour les actions de longue durée en arrière-plan tout en montrant à l'utilisateur une page d'attente personnalisée. Dans ce didacticiel, il montre un exemple complet d'utilisation de l'intercepteur Struts 2execAndWait.
1. action
Une classe d'action normale, avec un processus de longue durée pour démontrer l'effetexecAndWait.
LongProcessAction.java
package com.example.common.action; import com.opensymphony.xwork2.ActionSupport; public class LongProcessAction extends ActionSupport{ public String execute() throws Exception { //it should be delay few seconds, //unless you have a super powerful computer. for(int i =0; i<1000000; i++){ System.out.println(i); } return SUCCESS; } }
2. Pages JSP
Créez deux pages:
-
wait.jsp - montre à l'utilisateur pendant le traitement du processus de longue durée.
-
success.jsp - afficher à l'utilisateur une fois le processus terminé.
HTML meta refresh
N'oubliez pas de mettre le méta-rafraîchissement en haut de la page d'attente; Sinon, la page ne sera pas redirigée vers la page de réussite, même le processus est terminé.
Dans cewait.jsp, le méta-rafraîchissement est réglé la page pour se recharger toutes les 5 secondes, si le processus est terminé, il sera redirigé vers lessuccess.jsp, sinon rester à la même page.
wait.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> "/>Struts 2 execAndWait example
Please wait while we process your request...
success.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>Struts 2 execAndWait example
Done
3. Exécuter et attendre l'intercepteur
Liez la classe d'action et déclarez l'intercepteur "execAndWait".
Paramètres execAndWait
-
delay (optional): délai initial en millisecondes pour afficher le fichier wait.jsp. La valeur par défaut est aucun délai.
-
delaySleepInterval (optional): Intervalle en millisecondes pour vérifier si le processus d'arrière-plan est déjà terminé. La valeur par défaut est 100 millisecondes.
struts.xml
1000 500 pages/wait.jsp pages/success.jsp
Dans ce cas, il faudra attendre 1 seconde pour afficher leswait.jsp et vérifier si le processus d'arrière-plan est déjà effectué toutes les 500 millisecondes. Même le processus est terminé, il faut encore attendre la méta-actualisation dewait.jsp pour déclencher le rechargement de la page.
4. Demo
Accéder à l'URL:http://localhost:8080/Struts2Example/longProcessAction.action
Retardez 1 seconde et affichez leswait.jsp.
Lorsque le processus est terminé, affichez automatiquement lessuccess.jsp.