Www.helper3.com
热门关键字: php net javascript java
Struts2基础 专题
专题目录
您的位置:java > Struts2基础专题 > Struts2 execAndWait拦截器例子
Struts2 execAndWait拦截器例子
作者:--    发布时间:2019-11-20 10:14:44
在struts2中附带一个名为“execandwait”一个非常有趣的“执行和等待”拦截器,这是一个非常方便的拦截器长时间运行操作在后台,显示用户的自定义的等待页面。在本教程中,它显示了一个完整的使用 struts2 execandwait 拦截器的例子。

1. 动作

一个普通的动作类,有一个长时间运行进程,证明了execandwait效果。

longprocessaction.java

package com.h3.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 meta refresh
记得把元刷新的等待页面顶部; 否则,该网页将不重定向到成功页面,即使该过程完成。

在这个wait.jsp,元刷新设置在每5秒网页重新加载,如果该过程完成后,将重定向到 success.jsp, 否则留在同一个页面。

wait.jsp

<%@ page contenttype="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>struts 2 execandwait 示例</title>
<meta http-equiv="refresh" content="5;url=<s:url includeparams="all" />"/>
</head>
 
<body>
<h1>struts 2 execandwait 示例</h1>

<h3>please wait while we process your request...</h3>

</body>
</html>

success.jsp

<%@ page contenttype="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>struts 2 execandwait 示例</title>
</head>
 
<body>
<h1>struts 2 execandwait 示例</h1>

<h3>done</h3>

</body>
</html>

3. 执行和等待拦截器

链接动作类并声明“execandwait”拦截器。
execandwait 参数
  1. delay (optional) : 以毫秒为单位初始延迟显示在wait.jsp。默认是没有延迟的。
  2. delaysleepinterval (optional) : 时间间隔是以毫秒为单位来检查后台进程是否已经完成,默认值是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.h3.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. 示例

访问网址: http://localhost:8080/struts2execandwait/longprocessaction.action

延时1秒,显示在 wait.jsp 。
struts 2 execandwait interceptor example

当该过程完成时,自动显示在 success.jsp。

struts 2 execandwait interceptor example

代码下载:http://pan.baidu.com/s/1o62bhgy

参考

  1. struts2 execandwait拦截器文档
  2. html meta refresh

滚动到顶部 滚动到底部
网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
QQ群:570078429
网站备案号:
粤ICP备17073857号