2013-04-26 101 views
3

我正在开发一个web项目。流动是这样保持对象页面

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

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

编辑1.该对象由从servlet调用的类创建。我使用的是Apache Tomcat 7和Java 1.6。 HTML5也是一个选项(有人提到历史api)。

+1

有两个问题:首先,这是[tag:java]还是[tag:javascript]问题?其次,我们能否看到一些相关的代码? – Zyerah 2013-04-26 15:56:24

+0

这是一个java问题。没有代码。问题是我如何通过页面更改保持对象持久性。 – alkis 2013-04-26 16:00:45

+1

在这种情况下,我强烈建议使用[单页应用程序](http://addyosmani.com/blog/building-spas-jquerys-best-friends/)。 – Ikrom 2013-04-26 16:10:59

回答

6

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

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

如果你谈论的视图 - >浏览器然后是做的方法就是Ajax和/或帧和/或iFrame

优势与框架是你可以保持数据的另一farme,仍然从访问其他页面,但改变主视图区到另一个页面完全


详细 用户会议:在Servlet中使用,过滤器的JSP等等 - >关键对象对。可以有任意数量的键和对象,但是在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获得和setAttribute(字符串名,对象物体) 这个对象可以在所有页面和JSP读取。在执行初始化任务之前,如果对象已经存在(getAttribute不返回null),需要注意。主文件是否更改?如果可以保留一些调用jsps的代码来刷新它。 (像一个管理员jsp)

框架/ ajax是为客户端级别,你需要问一个更具体的问题,但堆栈溢出和谷歌有很多使用这个例子。

+0

这对用户来说很常见。 “将它保留在应用程序对象中”是什么意思? – alkis 2013-04-26 16:02:49

+1

@alkis它意味着将对象保存在应用范围a.k.a. ['ServletContext'](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html)中。 – 2013-04-26 16:11:35

+0

你的回答很好,请改善一点。 – 2013-04-26 16:12:24

2

您可以为该+ html5历史api使用ajax。所以当浏览你不会重新加载页面,但有历史API,你将有相同的视觉效果

+0

不知道那个api。谢谢。 – alkis 2013-04-26 16:05:13

+0

小心举一个这样的例子吗?否则,这应该是一个评论。 – 2013-04-26 16:12:42

+0

@LuiggiMendoza你可以谷歌例如。只需输入“Html5 history api and ajax example”或类似的东西:)) – karaxuna 2013-04-26 17:43:17