我有一个JSP页面,可以获取数据库结果,并且在有超过500个结果时需要花费大量时间来加载。我对此几乎没有问题: -
有没有办法优化这个过程?我在我的servlet中使用JDBC来获取结果并将它们呈现给JSP。
我认为另一种方法是在加载完成后加载并隐藏它时显示“加载栏”PNG图像,这样用户就不会在我的UI上疯狂。那么如何在JSP初始化时实例化Javascript函数,然后在JSP加载完成后再次调用该函数?
答案 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)
您可以考虑分页。或者在用户向下滚动时使用Ajax动态添加行。
您可以使用以下伪代码在加载时显示动画。
伪代码:
<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>