使用显示标签库将数据缓慢渲染到表中
我在我的 Struts 基础应用程序中使用 displaytag 1.0。我有 500 万行,通过 50 条记录分页来显示所有行数据的报告。渲染数据需要 5 分钟。我们可以减少这一点吗?请建议如何在一分钟内完成它。
I am using displaytag 1.0 in my Struts base application. I have 5 million rows to showing reports of all rows data by paging with 50 records. It takes 5 minutes to rendering the data. Can we reduce this one? Please suggest how make it with in one minutes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
显然,它正在将完整数据库拖入Java内存中,而不仅仅是感兴趣的数据(当前页面)。您需要在 DAO 级别引入基于请求的分页。
首先,在您的 DAO 类中执行 SELECT stuff FROM data LIMIT firstrow OFFSET rowcount 或类似操作,具体取决于所使用的数据库。然后在 JSP 中借助 JSTL
c:forEach
或 Struts 的logic:iterate
自行创建一个 HTML 表。在input type="hidden"
元素中在后台保留一个或两个请求参数:要显示的第一行 (firstrow) 以及最终一次显示的行数 (rowcount)。最后提供一堆按钮,指示服务器端代码每次使用rowcount
增加/减少firstrow
。只要算一下就可以了。您可以在此处找到更详细的答案。
It is apprently hauling the complete database into Java's memory instead of only the data of interest (the current page). You'll need to introduce request-based pagination at the DAO level.
To start, in your DAO class do a
SELECT stuff FROM data LIMIT firstrow OFFSET rowcount
or something like that depending on the DB used. Then in your JSP create a HTML table yourself with help of JSTLc:forEach
or Struts'logic:iterate
. Keep one or two request parameters in the background in ainput type="hidden"
element: the first row to be displayed (firstrow) and eventually the amount of rows to be displayed at once (rowcount). Finally provide a bunch of buttons which instructs the server side code to in/decrement thefirstrow
withrowcount
everytime. Just do the math.You can find a more detailed answer here.