有没有办法在JSP加载时触发Javascript函数

时间:2012-10-02 17:45:32

标签: java javascript jsp

我有一个JSP页面,可以获取数据库结果,并且在有超过500个结果时需要花费大量时间来加载。我对此几乎没有问题: -

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

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

3 个答案:

答案 0 :(得分:4)

JavaScript在客户端上运行,JSP代码在服务器上运行。它们不会同时运行,因此JavaScript毫无用处。如果需要很长时间,您需要弄清楚服务器上的问题并分析您的代码。

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

答案 1 :(得分: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>

答案 2 :(得分:0)

  1. 您可以考虑分页。或者在用户向下滚动时使用Ajax动态添加行。

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

  3. 伪代码:

    <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>