Struts 2 execAndWait拦截器示例

下载它– Struts2-ExecAndWait-Interceptor-Example.zip

Struts 2带有一个非常有趣的“ Execute and Wait ”拦截器,名为“ execAndWait ”,它是非常方便的拦截器,用于在后台向用户显示自定义的等待页面时长时间运行的操作。 在本教程中,它显示了使用Struts 2 execAndWait拦截器的完整示例。

1.行动

一个普通的动作类,具有长时间运行的过程来演示execAndWait效果。

LongProcessAction.java

package com.mkyong.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页面

创建两个页面:

  1. wait.jsp –在长时间运行的过程中向用户显示。
  2. success.jsp –完成后向用户显示。

HTML元刷新
记住将元刷新放在等待页面的顶部; 否则,即使过程完成,该页面也不会重定向到成功页面。

在此wait.jsp中 ,将元刷新设置为每5秒重新加载一次页面,如果该过程完成,它将重定向到success.jsp ,否则将保留在同一页面上。

wait.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="refresh" content="5;url=<s:url includeParams="all" />"/>
</head>
 
<body>
<h1>Struts 2 execAndWait example</h1>

<h2>Please wait while we process your request...</h2>

</body>
</html>

success.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>
 
<body>
<h1>Struts 2 execAndWait example</h1>

<h2>Done</h2>

</body>
</html>

3.执行并等待拦截器

链接动作类并声明“ execAndWait ”拦截器。

execAndWait参数

  1. delay(可选) :以毫秒为单位的初始延迟,以显示wait.jsp。 默认值是没有延迟。
  2. delaySleepInterval(可选) :以毫秒为单位的间隔,用于检查后台进程是否已完成。 默认值为100毫秒。

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
 	<constant name="struts.devMode" value="true" />
 	
	<package name="default" namespace="/" extends="struts-default">
		
		<action name="longProcessAction" 
			class="com.mkyong.common.action.LongProcessAction" >
			
			<interceptor-ref name="execAndWait">
		        <param name="delay">1000</param>
		        <param name="delaySleepInterval">500</param>
		    </interceptor-ref>
		    
		    <result name="wait">pages/wait.jsp</result>
		    <result name="success">pages/success.jsp</result>
		</action>
	
	</package>
	
	
</struts>

在这种情况下,将延迟1秒以显示wait.jsp ,并检查每500毫秒是否已经完成了后台进程。 即使该过程完成了,仍然需要等待wait.jsp元刷新来触发页面重新加载。

4.演示

访问URL: http:// localhost:8080 / Struts2Example / longProcessAction.action

延迟1秒,然后显示wait.jsp

Struts 2 ExecAndWait interceptor example

该过程完成后,自动显示success.jsp

Struts 2 ExecAndWait interceptor example

参考

  1. Struts 2 execAndWait拦截器文档
  2. HTML元刷新

翻译自: https://mkyong.com/struts2/struts-2-execandwait-interceptor-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值