使用显示标签库将数据缓慢渲染到表中

发布于 2024-08-28 02:56:41 字数 114 浏览 8 评论 0原文

我在我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江心雾 2024-09-04 02:56:41

显然,它正在将完整数据库拖入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 JSTL c:forEach or Struts' logic:iterate. Keep one or two request parameters in the background in a input 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 the firstrow with rowcount everytime. Just do the math.

You can find a more detailed answer here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文