通过页面保持对象

时间:2013-04-26 15:55:24

标签: java servlets load persistence

我正在开展一个网络项目。流程就像这样

  1. 用户输入参数
  2. 调用servlet(post方法)
  3. servlet在树对象中加载一个大文件(300.000行,每行一个单词)。做一些计算。
  4. 重定向到结果的新页面。
  5. 我的问题是这个。用户可以多次执行此操作。装载 文件到树对象的时间太长了。我怎么能这样做,只有一次? 我认为只有一个servlet(或jsp)而不是重定向到不同的页面,但是 用javascript操纵视图。这样我认为我将只设置加载文件一次(并且每当用户刷新时)。你有什么建议吗?

    编辑1.此对象由从servlet调用的类创建。我正在使用apache tomcat 7和java 1.6。 HTML5也是一个选项(有人提到历史api)。

2 个答案:

答案 0 :(得分:6)

该文件是否特定于用户?将对象保留在用户的会话中。

如果它对许多用户来说是通用的,他们只需要读取/查看这些数据就可以将它保存在应用程序对象中。

如果您谈论视图 - >浏览器然后是的方法是ajax和/或帧和/或iframe

使用框架的优点是您可以将数据保存在另一个文件夹中并仍然可以从其他页面访问它,但是将主视图区域完全更改为另一个页面


<强>详细 用户的会话:在servlet,过滤器,jsps等中可用 - &gt;关键对象。可以拥有任意数量的密钥和对象,但记住它在RAM中的所有内容,直到会话过期或明确销毁。

http://docs.oracle.com/cd/E19502-01/819-3669/bnaij/index.html

How to use the "application" object in a Servlet?

应用程序级别http://docs.oracle.com/javaee/5/api/index.html?javax/servlet/jsp/PageContext.html get和setAttribute(String name,Object object) 可以在所有页面和jsps中读取此对象。在执行初始化任务之前,需要注意对象是否已存在(getAttribute不返回null)。主文件是否会更改?如果这样可以保留一些调用jsps刷新它的代码。 (像管理员jsp)

Frames / ajax是针对客户端级别的,你需要为此提出一个更具体的问题,但堆栈流量和谷歌有很多使用它的例子。

答案 1 :(得分:2)

您可以将ajax用于该+ html5历史记录api。因此,在导航时,您不会重新加载页面,但使用历史API,您将获得相同的视觉效果