3

我正在做一个网络项目。流程是这样的

  1. 用户输入参数
  2. 调用 servlet(post 方法)
  3. servlet 在树对象中加载一个大文件(300.000 行,每行一个字)。做一些计算。
  4. 重定向到结果的新页面。

我的问题是这个。用户可以多次执行此操作。将文件加载到树对象的时间太长。我怎么能这样做,只有一次?我认为只有一个 servlet(或 jsp),而不是重定向到不同的页面,而是使用 javascript 操作视图。这样我认为我将设法只加载一次文件(并且每当用户刷新时)。你有什么建议吗?

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

4

2 回答 2

6

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

如果它对许多用户来说很常见并且他们只需要读取/查看此数据,请将其保存在应用程序对象中。

如果您谈论的是视图-> 浏览器,那么是的,方法是 ajax 和/或框架和/或 iframe

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


详细 用户会话:可用于 servlet、过滤器、jsps 等 -> 关键对象对。可以有任意数量的键和对象,但将其全部记住在 RAM 中,直到会话过期或显式销毁。

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

如何在 Servlet 中使用“应用程序”对象?

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

Frames/ajax 用于客户端级别,您需要为此提出更具体的问题,但堆栈溢出和谷歌有很多使用它的示例。

于 2013-04-26T15:57:09.330 回答
2

你可以使用 ajax + html5 history api。所以在导航时你不会重新加载页面,但使用历史 api,你将有相同的视觉效果

于 2013-04-26T15:56:33.077 回答