2009-06-23 39 views
0

要跟蹤Web應用程序上的用戶活動歷史記錄,我試圖在會話失效時將某些會話數據保存到數據庫。我最初的方法是將數據存儲在具有會話範圍的javabean中,並通過finalize方法將其數據轉儲到數據庫。如何通過jsp/servlets在http會話失效時保存數據?

我想這不會是一個完美的解決方案,因爲finalize的不可預知的行爲,但它應該工作並最終保存數據。然而,事實證明,這種策略無法可靠地達到預期的結果 - 即使手動使會話失效並切換當前用戶,數據通常也不會被記錄。

將數據會話數據保存到數據庫而不必在每次客戶端操作後都不斷更新的更好方法是什麼?有沒有辦法在會話失效時調用特定的方法?

回答

0

HttpSessionListener可能有助於做你想要做的事情。

使用此功能,您可以得知何時創建新會話或舊會話被銷燬。

例如

創建一個監聽器類:

public class MySessionListener implements HttpSessionListener { 

    public void sessionCreated(HttpSessionEvent e) { 
    //... 
    } 

    public void sessionDestroyed(HttpSessionEvent e) { 
    //... 
    } 

} 

然後在web.xml

<listener> 
    <listener-class>mypackage.MySessionListener</listener-class> 
</listener> 
+0

這有一定的幫助,但是,考慮到我的設計,它似乎是一個相當完整的要求方式。我會再堅持一天,看看有沒有更好的建議,否則我會給你信貸的解決方案。 – dborba 2009-06-24 14:56:20