zoukankan      html  css  js  c++  java
  • 【struts2】struts2的execAndWait拦截器使用

      使用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 < 500000; 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

  • 相关阅读:
    Redis集群持久化
    Redis集群介绍
    电脑CPU讲解
    Centos7 k8s v1.5.2二进制部署安装-交付jenkins到k8s集群
    Centos7 k8s v1.5.2二进制部署安装-交付dubbo服务到k8s集群准备工作
    华为云全栈产品福利来袭,终身VIP免费送!
    Centos7 k8s v1.5.2二进制部署安装-dashboard--WEB管理
    Centos7 k8s v1.5.2二进制部署安装-服务暴露ingress控制器之traefik
    简单两步禁止 iOS 系统频繁提示更新,亲测有效
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3728712.html
Copyright © 2011-2022 走看看