Struts 2 Beispiel für ein Interceptor von execAndWait

Struts 2 ExecAndWait Interceptor Beispiel

Laden Sie es herunter -Struts2-ExecAndWait-Interceptor-Example.zip

Struts 2 wird mit einem sehr interessanten Interceptor "Execute and Wait" mit dem Namen "execAndWait" geliefert. Dieser Interceptor ist sehr praktisch für lange laufende Aktionen im Hintergrund und zeigt dem Benutzer eine benutzerdefinierte Warteseite. In diesem Tutorial wird ein vollständiges Beispiel für die Verwendung des Interceptors Struts 2execAndWaitgezeigt.

1. Aktion

Eine normale Aktionsklasse mit einem lang laufenden Prozess, um den Effekt vonexecAndWaitzu demonstrieren.

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. JSP-Seiten

Erstelle zwei Seiten:

  1. wait.jsp - Dem Benutzer anzeigen, während der lange laufende Prozess verarbeitet wird.

  2. success.jsp - Wird dem Benutzer nach Abschluss des Vorgangs angezeigt.

HTML meta refresh
Denken Sie daran, die Meta-Aktualisierung oben auf die Warteseite zu setzen. Andernfalls wird die Seite nicht zur Erfolgsseite umgeleitet, selbst wenn der Vorgang abgeschlossen ist.

In diesemwait.jsp wird die Meta-Aktualisierung so eingestellt, dass die Seite alle 5 Sekunden neu geladen wird. Wenn der Vorgang abgeschlossen ist, wird sie zusuccess.jsp umgeleitet, andernfalls bleibt sie auf derselben Seite.

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. Interceptor ausführen und warten

Verknüpfen Sie die Aktionsklasse und deklarieren Sie den Interceptor "execAndWait".

execAndWait-Parameter

  1. delay (optional): Anfängliche Verzögerung in Millisekunden, um die wait.jsp anzuzeigen. Standard ist keine Verzögerung.

  2. delaySleepInterval (optional): Intervall in Millisekunden, um zu überprüfen, ob der Hintergrundprozess bereits abgeschlossen ist. Die Standardeinstellung ist 100 Millisekunden.

struts.xml





    

    

        

            
                1000
                500
            

            pages/wait.jsp
            pages/success.jsp
        

    


In diesem Fall verzögert sich die Anzeige vonwait.jsp um 1 Sekunde und überprüft alle 500 Millisekunden, ob der Hintergrundprozess bereits abgeschlossen ist. Selbst wenn der Vorgang abgeschlossen ist, muss die Meta-Aktualisierung vonwait.jspnoch gewartet werden, um das erneute Laden der Seite auszulösen.

4. Demo

Verzögern Sie 1 Sekunde und zeigen Sie diewait.jsp an.

Struts 2 ExecAndWait interceptor example

Wenn der Vorgang abgeschlossen ist, werden diesuccess.jsp automatisch angezeigt.

Struts 2 ExecAndWait interceptor example