Java 在jsp中显示巨大的arraylist

Java 在jsp中显示巨大的arraylist,java,performance,jsp,records,Java,Performance,Jsp,Records,我在arraylist中有15000条记录,每条记录的大小约为2MB。我已经以最有效的方式在jsp页面上显示了这个列表 请建议最好的方法 我无法在服务器端筛选数据。用户需要同时在jsp页面上显示所有记录 提前感谢。我不知道是否有一种真正有效的方法来显示这么多记录,但您可能会在页面上有一个列表(页面的“高级/搜索大集合”下有一个用于显示和搜索12000条记录的示例)。 或者,任何其他JavaScript网格(如中的一个)都可能会有所帮助。简单的答案是,您不能在简单的JSP中呈现15000*2Mb的

我在arraylist中有15000条记录,每条记录的大小约为2MB。我已经以最有效的方式在jsp页面上显示了这个列表

请建议最好的方法

我无法在服务器端筛选数据。用户需要同时在jsp页面上显示所有记录


提前感谢。

我不知道是否有一种真正有效的方法来显示这么多记录,但您可能会在页面上有一个列表(页面的“高级/搜索大集合”下有一个用于显示和搜索12000条记录的示例)。
或者,任何其他JavaScript网格(如中的一个)都可能会有所帮助。

简单的答案是,您不能在简单的JSP中呈现15000*2Mb的记录。这相当于一个30Gb的网页(+格式化),必须由服务器呈现并传输到浏览器,然后由浏览器进行缓冲和显示。这根本行不通。首先,用户的计算机将没有30Gb的RAM

因此,这意味着您必须实现一个更复杂的解决方案,在该解决方案中,您为用户提供某种表格或列表查看器,允许用户翻页或滚动15000条记录,而无需将全部内容发送到用户的浏览器。传统的方法是在服务器端实现列表视图/滚动逻辑和渲染。Web 2.0的方法是使用一些Javascript工具包在客户端实现显示和滚动,使用AJAX调用在用户查看记录时从服务器获取记录。

flush()定期刷新响应编写器以向客户端发送数据

确保不要使用一英里高的表格或类似表格,这些表格需要浏览器处理许多对象才能进行布局


告诉用户使用现代浏览器。我相信Opera能很好地处理此类页面。

谢谢您的解决方案。事实上,我正在寻找一种解决方案,该解决方案将考虑获取12000条记录所需的数据库访问次数+并发用户数量。如果您的数据库无法获取12000条记录,并以比客户端呈现该数据量更及时的方式添加一些分页,那么您可能需要重新考虑数据库设计。正如Stephen已经说过的,一次显示大量数据可能会杀死客户端(不仅仅是要呈现的2MB数据)。我们可以进行某种序列化以避免长时间的数据库连接吗?在这种情况下,数据库端的负载将很低,可以从文件系统进行递归获取。如果记录不经常更改,您可以使用Memcached来存储它们,并用Java进行分页。问题是,如果真的需要一次检索12000条记录(我永远不会查看所有记录)。如果您进行数据库分页,甚至可能会降低负载,因为您只需要检索少量的项。Memcached是一个分布式内存缓存系统(尽管您的记录需要30 Gig的ram)。看到没有,您想要一种高效的方式来显示30 Gig的网页?我想你需要一些独角兽。即使你可以渲染,大多数网络浏览器都不能处理那么多数据。页面将永远不会显示。请尝试flash或flex。我对UI中的20k记录也有同样的问题,但html无法支持,因此我们使用flex加载时间会很长,但在插件中运行时,UI中的性能会很好。我相信海报上没有说渲染的记录将为2MB。问题不清楚,但是(IMO)这是他所指的一个合理的推断,我认为我们不能将记录按记录刷新到jsp。在这种情况下,它将抛出已提交错误的响应。