2

我有一个 JSP 页面,它获取数据库结果并需要很长时间才能加载,有时有超过 500 个结果。我对此有几个问题:-

  1. 有没有办法优化这个过程?我在我的 servlet 中使用 JDBC 来获取结果并将它们呈现给 JSP。

  2. 我认为另一种方法是在 JSP 加载时显示“加载栏”PNG 图像,并在加载完成时将其隐藏,这样用户就不会在我的 UI 上发疯。那么如何在 JSP 初始化时实例化一个 Javascript 函数,然后在 JSP 加载完成时再次调用该函数?

4

3 回答 3

4

JavaScript 运行在客户端,JSP 代码运行在服务器上。它们不会同时运行,所以 JavaScript 没有用。如果需要很长时间,您需要找出服务器上的问题并分析您的代码。

您可以尝试在没有记录的情况下最初加载页面。然后,您可以使用 Ajax 请求加载内容。

于 2012-10-02T17:49:03.673 回答
0

使用响应刷新:(JSP)

response.setHeader("Transfer-Encoding", "chunked");
response.getWriter().write("<html><head><script>alert('this will take awhile');</script></head>");
response.getWriter().flush();
...
/* long running JSP jdbc query and output */

使用 AJAX 或更简单的 IFRAME:

<!-- home.jsp -->
<html><head></head>
<body>
    <div id="loading">Your content is loading</div>
    <iframe name="content" src="jdbcquery.jsp" onLoad="document.getElementById('loading').innerHTML=='Load Succeeded';">
    </iframe>
</body>
</html>
于 2012-10-02T18:10:46.603 回答
0
  1. 你可以考虑分页。或者在用户向下滚动时使用 Ajax 动态添加行。

  2. 您可以使用以下伪代码在加载时显示动画。

伪代码:

<div id="loader">Loading / GIF animation</div>
<div id="result" style="display:none;">
  Lots of data.
  Should be flushed to the browser every now and then.
  This will take seconds...
</div>
<script type="text/javascript">
  $("#loader").hide();
  $("#result").show();
</script>
于 2012-10-02T19:46:47.093 回答