struts2开发11--提交后自动显示等待界面

有时候当我们从前台提交大量的数据到服务器时,由于服务器处理的时间较长,这个时候我们在浏览器中看到的是一片空白,不知道后台程序是否成功执行了,这个时候就设置一个友好的信息交互界面(比如在界面上提示系统正在处理等信息)来提示用户。

(1) 在struts2中,实现该功能的是使用execAndWait拦截器,它的具体实现过程如下:

1、当表单提交请求到来时,execAndWait拦截器将创建一个新的线程来执行Action,然后返回一个等待页面给用户,让用户知道请求正在处理中。

2、等待页面将包含自动刷新功能,等待界面每隔几秒就通知浏览器,向初始请求的URL再次发送请求。

3、execAndWait拦截器将再次拦截请求,判断Action是否执行完成,如果仍未执行完成,则继续返回等待界面给用户,如果已经执行完成,则向用户返回相应的执行成功界面。

(2) execAndWait拦截器的参数

1、threaPriority    可选参数,用来指定线程的优先级,默认值为Thread.NORM_PRIORITY。

2、delay    可选参数,指定显示,等待页面前,初始等待的延迟时间,以ms为单位。

3、delaySleepInterval 可选参数,只能和dalay参数一起使用,用来指定检查后台进程是否执行完毕的时间间隔,以ms为单位。

(3)execAndWait在struts.xml文件中的配置如下:

<action name="Exception" class="cn.test.action.ExceptionTestAction" method="execute">
        <interceptor-ref name="defaultStack"></interceptor-ref>
        <interceptor-ref name="execAndWait"></interceptor-ref>
            <result name="success">/WEB-INF/jsp/Esuccess.jsp</result>
             <result name="wait">/WEB-INF/jsp/wait.jsp</result>
        </action>

提示等待wait.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="refresh" content="5">
</head>
<body>
正在处理中.....
</body>
</html>

运行程序,5秒后将执行页面刷新操作,如果发现Action已经完成操作,则返回success指向的视图Esuccess.jsp,如果发现Action没有完成相应的操作,则会再次请求wait.jsp页面。

如果设置delay参数

 <interceptor-ref name="execAndWait">

<param name="delay">1000</param >

</interceptor-ref>

表示在提交表单后,1000ms内不论Action是否处理完成,都不会显示等待页面。在1000ms之后,如果Action能够处理完请求,则根据Action的返回结果显示相应的视图,否则,继续显示等待wait.jsp界面。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值