Struts 2 execAndWait interceptor

execAndWait interceptor:

The execAndWait interceptor is used in case of long running action. It sends the user to an intermediate waiting page while action is executed.
Note: We have to put the meta refresh tag on the top of the waiting page so that waiting page will redirect to the required result page.

Struts 2 execAndWait interceptor example:

test.jsp

<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
	<head>
	 <title>Struts 2 execAndWait interceptor example</title>
	</head>
	<body>
	  <h3>This is an execAndWait interceptor example.</h3>
 
	  <s:form action="test">
		<s:submit value="Hello" align="center"/>
	  </s:form>
 
	</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 
 	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
        	org.apache.struts2.dispatcher.ng.
        	filter.StrutsPrepareAndExecuteFilter
        </filter-class>
	</filter>
 
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
 
	<welcome-file-list>
	  <welcome-file>test.jsp</welcome-file>
	</welcome-file-list>
 
</web-app>

struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
 
	<package name="user" extends="struts-default">
		<action name="test" 
		           class="com.codejava.action.Test">
		  <interceptor-ref name="logger"/>
		  <interceptor-ref name="execAndWait"/>  
		  <result name="success">/welcome.jsp</result>
		  <result name="wait">/wait.jsp</result>
		</action>
	</package>
 
</struts>

Test.java

/**
 * This class is used as an action class.
 * @author w3schools
 */
public class Test {
 
	//business logic
	public String execute(){
		//for delaying processing.
		for(int count =0; count < 10000; count++){
			System.out.println(count);
		}
 
		return "success";	
	}	
}

welcome.jsp

<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
	<head>
	  <title>Struts 2 execAndWait interceptor example</title>
	</head>
	<body>
	  <h3>This is an execAndWait interceptor example.</h3>	 
	</body>
</html>

Output:

struts 9 first
 
Click on Hello button.
struts 9 wait
 
struts 9 final
 
Download this example.
 
Next Topic: Struts 2 custom interceptor with example.
Previous Topic: Interceptors in struts 2 with example.