Exemple d’intercepteur execAndWait de Struts 2

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:

  1. wait.jsp - montre à l'utilisateur pendant le traitement du processus de longue durée.

  2. 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

  1. delay (optional): délai initial en millisecondes pour afficher le fichier wait.jsp. La valeur par défaut est aucun délai.

  2. 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

Retardez 1 seconde et affichez leswait.jsp.

Struts 2 ExecAndWait interceptor example

Lorsque le processus est terminé, affichez automatiquement lessuccess.jsp.

Struts 2 ExecAndWait interceptor example