`
舟舟同学
  • 浏览: 44323 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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界面。

 

 

 

1
3
分享到:
评论
1 楼 bewithme 2016-04-27  
放弃strtus吧小兄弟

相关推荐

Global site tag (gtag.js) - Google Analytics