2011-08-12 18 views
1

我正在開發一個自定義搜索應用程序。由用戶輸入的查詢將被預處理以去除某些查詢項。刪除標準是基於對語料庫中的所有術語預先計算的分數。我正在考慮將條款及其分數存儲在散列中,並且當用戶輸入查詢時,我可以從散列中獲得條款的分數,並根據條件刪除條款。使用JSP的多個客戶端請求的單個全局變量

但是,由於散列非常大,是否有可能將其作爲全局變量,因此對於多個客戶端請求,只有一個變量副本存在於內存中?我想在index.jsp中將其聲明爲全局變量將不起作用,因爲對於每個客戶端請求,都會在內存中創建單獨的副本。

+0

你的問題意味着你將開發一個多層應用程序,它將利用緩存來提高性能。當應用程序開始走下更復雜的設計道路時,最好開始使用框架:a)包含可以遵循的標準模式以簡化您的開發和維護; b)包含您自己需要手動編寫代碼的功能(例如緩存)。你可以使用servlet和JSP,但是你需要一遍又一遍地重新發明輪子。 – atrain

回答

2

您可以將其存儲在application scope中。

application.setAttribute("someName", someObject); 

您可以通過getAttribute()再次得到它。


注意,這項工作通常是由一個ServletContextListener和/或HttpServlet來完成,而不是在JSP中。在JSP中編寫Java代碼被認爲是不好的做法。

0

你也可以使用Singleton模式。它只會啓動一次。