java - 使用显示 :table jSTL tag 的内存使用问题

标签 java jsp memory displaytag

我已经使用 <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/

相关文章:

java - java 填充数组列表

c++ - 内存访问与内存复制

java - 尝试使用 Google App Engine(java) 使用不受信任的证书连接到 SSL (HTTPS) 时出现异常

java - 当我重新部署应用程序时,BouncycaSTLe 无法加载

Java 更改所有按钮的字体

java - HTML - 有条件地选中复选框

java - 如何在 JSP 页面的一部分(即在一个特定的 div 中)显示 hibernate 绑定(bind)验证异常

java - Tomcat 7 TagLib 和用户问题

c - 在 C 中,大括号是否充当堆栈框架?

javascript - Node.js 似乎在循环后没有释放内存