我已经使用 <display:table>
编写了我的 jsp显示搜索结果。 <display:table>
需要将 javabean 列表作为参数传入。目前 Controller 将构建列表,然后 jsp 显示它。
我担心的是如果 1000 位用户同时执行搜索会发生什么情况。这意味着所有结果都需要作为 <display:table>
的不同 javabean 列表加载到内存中。显示。系统可能会因为内存不足而崩溃。有没有好的策略来防止系统内存不足?有没有办法在应用程序级别限制用户加载应用程序的数量?这是否意味着使用 <display:table>
是一种糟糕的编程习惯,因为所有记录都必须立即加载到内存中?提前致谢。
最佳答案
这是一个非常有道理的担忧。你不应该不必要地分配内存。不幸的是,Displaytag 不支持数据库级别的分页。一切都必须首先加载到 Java 的内存中。内存效率最高的方法显然是 仅 将最终用户将要看到的数据存储在内存中,并向服务器发出新的 HTTP 请求,以便在每次单击按钮时从数据库中准确检索这些新行.
没有想到其他基于 JSP 的分页标签。如果您使用的是 JSF,我会推荐 PrimeFaces' <p:dataTable dynamic="true">
为了这。您仍然必须编写从数据库中准确检索特定行的代码。但是,当您使用 Hibernate 和/或 JPA 时,这并不难。
在“普通的”JSP/JSTL 中,您必须做更多的工作。基本上,您需要提供一堆按钮来修改 firstrow
的值。并相应地调用操作以从数据库中检索数据。我之前在本主题中已经详细回答了这个问题:ResultSet to Pagination .
关于java - 使用显示 :table jSTL tag 的内存使用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3350629/