在执行jsp站点上的java代码时显示加载gif

时间:2015-09-09 09:37:53

标签: html css jsp

我发现了很多类似的东西,但没有一个真正符合我的意愿。

我有一个jsp,一开始是java代码,实际需要10-30秒才能完成(我从数据库中获取内容并构建图表),我想在中间添加一个很好的加载图像页面并在加载完成后使其淡出。

1 个答案:

答案 0 :(得分:1)

这不是一个直接的解决方案。但是,它可以使用iframe来实现您的要求。

我对单页jsp的试验失败,因为在JSP内部的进程完成之前,页面加载没有发生。

以下是我使用的解决方法:

  
      
  1. 创建处理显示部分的主JSP(假设为index.jsp)页面
  2.   
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Testing the loading</title>
    <script type="text/javascript">
    function processRecords(){
        document.getElementById("mainContent").src = "process.jsp";
    }
    </script>
</head>
<body onload="processRecords()">
    <iframe id="mainContent" width="100%" style="border: none" seamless src="loader.jsp"></iframe>
</body>
</html>
  
      
  1. 使用加载程序显示部件
  2. 创建JSP / HTML(假设为loader.jsp)   
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<title>Processing</title>
</head>
<body>
<img src="images/loader.gif" style="position:absolute; top:0; bottom:0; left:0; right:0; margin:auto;"/>
</body>
</html>
  
      
  1. 使用实际处理&amp;创建JSP(假设process.jsp)。结果显示
  2.   
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<title>Processing</title>
</head>
<body>
    <%
        //Following is a manual sleep simulating a process 
        try {
            //Sleep for 10 seconds
            Thread.sleep(10000);
        } catch (InterruptedException ex) {
            out.write("Error occurred while processing");
        }
        out.write("Done!");
    %>
</body>
</html>
  
      
  1. 工作
  2.   

当主JSP页面(index.jsp)加载时,它将加载iframe src指向加载器JSP页面(loader.jsp)。因此,最初将显示加载程序gif图像。主JSP页面中的onload方法调用javascript,javascript又调用实际的处理JSP页面(process.jsp)。直到处理JSP页面返回结果,iframe中的加载器页面将不会被替换模拟,从而在Java代码中处理之前模拟加载。