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