2010-02-18 91 views
0

我刚开始使用displayTag来存储数据库查询中对象的整个结果集,并在JSP中以页面化格式显示它们。DisplayTag有关HttpSession的问题

我发现我必须将整个结果集存储在HttpSession中,否则displayTag会丢失前进到下一页的数据。

我的问题是在会话中存储这个大对象图。我应该在用户离开使用displayTag的JSP之后手动清理会话吗?或者也许我错过了一些东西。如果我可以将结果集存储在请求中并让displayTag管理这些对象的内存,那将会很好。

谢谢

回答

0

显示标签只使用值从页面上下文,它可以是任何的page, request, session, or application范围。当我完成了所描述的东西之类的事情时,我使用了请求范围,它避免了你描述的问题 - 如果你想在用户会话中缓存对象,除了超时控制它们停留的时间。会话中的缓存并不是很好,因为用户可能只是盯着该页面10分钟,而该结果集恰好位于服务器占用空间的位置。

如果你确实需要缓存,如果你能找到一种方法让用户以某种方式分享数据,那么全局缓存可能会更好。另一个选择可能是只提取特定请求所需的数据 - 例如,不通过加载整个行集并显示子集来分页,而是仅加载单个子集。

+0

谢谢,我最初把结果放在请求中,但是当我开始推进页面时,结果已经消失。只有第1页显示正确。我将使用会话,但会尝试从数据库中返回一部分数据。 – 2010-02-18 14:04:22