使用execAndWait拦截器可以在等待较长时间的后台处理中增加等待页面。实现如下图所示的效果:

  1)struts.xml主要部分

<action name="test" class="actions.ActionDemo" method="queryall">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait">
<!-- 等待时间,执行时间没有超过此值,将不显示等待画面 (毫秒)-->
<param name="delay">1000</param>
<!-- 间隔检查时间,检查后台进程有没有执行完毕,如果完成了它就立刻返回,不用等到等待,用户不会看到等待画面 -->
<param name="delaySleepInterval">50</param>
</interceptor-ref>
<result name="wait">/wait.jsp</result>
<result name="success">/rs.jsp</result>
</action>

  2)action主要部分

public String queryall(){

        for (int i = 0; i <; i++) {
System.out.println(i);
}
user = "你好";
this.setListData();
return Action.SUCCESS;
}

  3)jsp页面取值部分(rs.jsp)

  List list =  (List)request.getAttribute("listall"); 取值OK

  4)等待页面部分(wait.jsp)

<%@ page contentType="text/html; charset=GBK" language="java"
errorPage=""%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=gbk">
<META HTTP-EQUIV="Refresh" content="2;url=<s:url includeParams="all"/>"/>
<title> 正在查询,请稍等...</title>
<style type="text/css">
.query_hint{
border:5px solid #939393;
width:250px;
height:50px;
line-height:55px;
padding:0 20px;
position:absolute;
left:50%;
margin-left:-140px;
top:50%;
margin-top:-40px;
font-size:15px;
color:#333;
font-weight:bold;
text-align:center;
background-color:#f9f9f9;
}
.query_hint img{position:relative;top:10px;left:-8px;}
</style>
</head> <body>
<div id="query_hint" class="query_hint">
<img src="http://files.cnblogs.com/ningvsban/waiting.gif" />正在查询,请稍<s:url includeParams="all"/>等...
</div>
<!--
<a href="<s:url includeParams="all" />"> 点这里 </a> 如果没有自动跳转请点击这里.
-->
</body>
</html>

  关于<meta http-equiv="refresh" content="0;url= "/>的几点说明:

  1)该句话用于页面定期刷新,如果加url的,则会重新定向到指定的网页,content后面跟的是时间(单位秒),把这句话加到指定网页的<head></head>里一般也用在实时性很强的应用中,需要定期刷新的页面,如新闻页面,论坛等,不过一般不会用这个,都用新的技术比如ajax等。

  2)对于wait.jsp中的<meta http-equiv="refresh" content="2;url=<s:url includeParams="all"/> "/>意思为:每隔2秒自动刷新定位到目标页面。

  3)对于<s:url includeParams="all"/>为struts2的标签<s:url>,详细请点击这里

  参考资料:http://blog.csdn.net/yirentianran/article/details/3392314

【struts2】struts2的execAndWait拦截器使用的更多相关文章

  1. struts2的execAndWait拦截器

    struts2中有许多默认拦截器,这里我们看一下execAndWait拦截器. 当一个页面需要加载一段时间的时候,我们希望它不是一直呆在原页面直到加载完成,而是进入等待页面,加载完毕后自动进入目标页面 ...

  2. 【struts2】预定义拦截器

    1)预定义拦截器 Struts2有默认的拦截器配置,也就是说,虽然我们没有主动去配置任何关于拦截器的东西,但是Struts2会使用默认引用的拦截器.由于Struts2的默认拦截器声明和引用都在这个St ...

  3. 使用struts2中默认的拦截器以及自定义拦截器

    转自:http://blog.sina.com.cn/s/blog_82f01d350101echs.html 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Acti ...

  4. Struts2基础学习(五)—拦截器

    一.概述 1.初识拦截器      Interceptor 拦截器类似前面学过的过滤器,是可以在action执行前后执行的代码,是我们做Web开发经常用到的技术.比如:权限控制.日志等.我们也可以将多 ...

  5. 33.使用默认的execAndWait拦截器

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 当我们进行数据库查询等相关的操作时,如果服务器负荷过重可能不能及时把数据查询 ...

  6. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  7. 【Java EE 学习 69 上】【struts2】【paramsPrepareParamsStack拦截器栈解决model对象和属性赋值冲突问题】

    昨天有同学问我问题,他告诉我他的Action中的一个属性明明提供了get/set方法,但是在方法中却获取不到表单中传递过来的值.代码如下(简化后的代码) public class UserAction ...

  8. Struts2 源码分析——拦截器的机制

    本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...

  9. Struts2学习笔记(拦截器配置添加)

    一.拦截器工作原理: 根据Struts2的工作原理图,拦截器在action执行前进行顺序调用,之后执行Action并返回结果字符串,再逆序调用拦截器.(结构类似递归方式...)大部分时候,拦截器方法都 ...

随机推荐

  1. 准备Mahout所用的向量ApplesToVectors

    <strong><span style="font-size:18px;">/*** * @author YangXin * @info 准备Mahout所 ...

  2. UART,SPI,IIC的一点理解

    转自:http://bbs.21ic.com/icview-253715-1-1.html UART通用异步收发器,UART是通用的异步传输模式,在它这种基础上加上其他接口或者解码器就衍生出多种异步传 ...

  3. Gradle基本使用(1):安装、IDEA使用

    安装配置Gradle Gradle 二进制版下载地址: https://gradle.org/install/ 下载后解压,并将 GRADLE_HOME/bin  添加到系统 path变量,即可:   ...

  4. hibernate5(12)注解映射[4]一对一外键关联

    在实际博客站点中,文章内容的数据量非常多,它会影响我们检索文章其他数据的时间,如查询公布时间.标题.类别的等. 这个时候,我们能够尝试将文章内容存在还有一张表中,然后建立起文章--文章内容的一对一映射 ...

  5. HDU1211 RSA

    RSA Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  6. hdu 3308 LCIS(线段树区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=3308 LCIS Time Limit: 6000/2000 MS (Java/Others)     ...

  7. android openCL的so库目录(转)

    android 6.0下 高通平台:/system/vendor/lib/libOpenCL.so mali:/system/lib/egl/libGLES_mali.so 在应用市场上下载openC ...

  8. auto function -> return type 当不能从{}内推断类型时

    示例: template<class F, class... Args> auto ThreadPool::enqueue(F&& f, Args&&... ...

  9. django之创建第8-2个项目-数据库数据提取之过滤操作符相关

    """1)age__gt = 16等价于age > 162)age = 163)age__gte = 16等价于age >= 164)name__contai ...

  10. JUC-线程池调度-ScheduledThreadPool

    线程调度使用类:ScheduledExecutorService 创建线程池调度类对象: ScheduledExecutorService pool = Executors.newScheduledT ...