2013-01-24 34 views
1

我的Java EE項目中存在關於刷新jsp頁面的問題。 每次Servlet修改我的項目中的數據庫時,這些更改都不會出現在jsp頁面中。它們只在用戶註銷後出現。在Servlet中刷新JSP數據庫中的更改

是否有一種方法可以在數據庫MySQL更改後刷新會話? (我使用服務器JBoss)。

+0

如果我是你,我會檢查數據庫讀取的值是否被緩存。如果是這樣,你需要找到一些方法來在需要時使緩存失效。或者,您可以取消緩存並在每次請求頁面時重新讀取數據庫值。 –

+1

值是否存儲在會話中?你能提供一段代碼來理解你在做什麼嗎? –

+0

檢查各級緩存。 –

回答

1

不要將DB檢索到的數據存儲在會話範圍中。將其存儲在請求範圍中。這樣,最終用戶將獲得每個HTTP請求的最新數據。

如果您擔心性能,那麼應該尋找另一種解決方案,而不是濫用HTTP會話作爲某種效率低下且無法管理的緩存。例如,一個數據庫連接池以1ms而不是200〜500ms與數據庫連接,或者一個基於Java的二級數據庫緩存,如Terracotta和Ehcache,以便擁有一個理智而可管理的共享緩存,而不是低效地複製就像現在所做的那樣,爲不同HTTP會話中的所有用戶提供非常相同的數據。

如果您使用JPA而不是「普通舊式」JDBC,這一切都會更加簡單。

0

我以這種方式解決: 當我設置我的個人資料的新參數我做了一個新的request.getSession.setAttribute(user);之前使getRequestDispatcher(myPage.jsp);。非常感謝!!

相關問題