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:
-
wait.jsp - Dem Benutzer anzeigen, während der lange laufende Prozess verarbeitet wird.
-
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
-
delay (optional): Anfängliche Verzögerung in Millisekunden, um die wait.jsp anzuzeigen. Standard ist keine Verzögerung.
-
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
Zugriff auf die URL:http://localhost:8080/Struts2Example/longProcessAction.action
Verzögern Sie 1 Sekunde und zeigen Sie diewait.jsp an.
Wenn der Vorgang abgeschlossen ist, werden diesuccess.jsp automatisch angezeigt.