我使用servlet上下文來保存哈希映射中登錄用戶的詳細信息。如何清除20分鐘後閒置的用戶的用戶ID?如何清除Java中的servlet上下文
回答
- 計劃從
ServletContextListener
- 使用
remove()
的HashMap
方法的工作簡單地說,要確保有關concurrency
最簡單的方法是實施ServletContextListener
,在contextInitialized()
啓動一個線程,將做的工作。在contextDestroyed
扼殺了線程。該映射應該是線程安全的:同步的或併發的。
可能您可以將應用程序的會話超時設置爲20分鐘,並確保每個用戶都有一個活動會話,其中也包含用戶標識。如果用戶閒置20分鐘,則會話將被破壞。
然後,您可以編寫一個HttpSessionListener在會話被銷燬時被調用。從那裏你可以得到用戶ID(你之前已經存儲過,可能在用戶登錄時),並且可以從SessionContext中的HashMap中刪除它。
使用servlet會話管理使會話失效。如果閒置20分鐘,web.xml中的這個片段將會使會話無效。
<session-config><session-timeout>20</session-timeout></session-config>
實現javax.servlet.http.HttpSessionListener.sessionCreated()創建一個會話時得到一個回調。這個會話ID添加到使用
List<String> users = HttpSessionEvent.getSession().getServletContext().getAttribute("users");
users.add(session.getId());
實現javax.servlet.http.HttpSessionListener.sessionDestroyed(),它得到當會話被銷燬回調servlet上下文。從服務器上下文中刪除此會話使用
List<String> users = HttpSessionEvent.getSession().getServletContext().getAttribute("users");
users.remove(session.getId());
這對於會話很好,但在我看來這不適用於servlet上下文 – dean 2011-06-01 11:09:35
對不起,什麼不適用於servlet上下文。你能否詳細說明。 – 2011-06-01 11:12:43
- 1. 如何清除對象上下文
- 2. 如何清除設備上下文?
- 3. 從servlet中刪除上下文屬性
- 4. 清除上下文圖形
- 5. servlet上下文
- 6. 如何從Servlet 2.5中的ServletRequest獲取Servlet上下文?
- 7. 如何刪除Java Servlet中的Cookie
- 8. Java Arraylist清除:清除()如何工作
- 9. 清除錯誤的數據上下文?
- 10. 如何讀取非servlet java文件中的上下文參數/ web.xml值?
- 11. Servlet上下文URL
- 12. 如何下載Java Servlet文檔並附上eclipse
- 13. 如何使用JQuery清除清除按鈕上的文本
- 14. java me:如何清除文件
- 15. 如何正確清除旋轉的HTML5 canvas上下文?
- 16. 如何清除java中的輸入流
- 17. 如何清除java中的BufferedReader
- 18. 如何清除java中的ClassCastException?
- 19. 如何清除Java中的控制檯
- 20. 如何用java清除Selenium中的下拉菜單
- 21. 如何清除Android中的文本文件-java
- 22. Java servlet - 如何在java servlet中執行jar文件
- 23. 如何獲取已在Java Servlet中設置的全局對象上下文
- 24. 存儲在servlet上下文中的Java與數據庫查找
- 25. 如何防止servlet中的表單輸入清除?
- 26. Java Servlet下載
- 27. Java servlet - 會話清理(HttpServletRequest)
- 28. 如何清除文件上傳字段?
- 29. 如何在上傳後清除文件?
- 30. 如何獲得java servlet中的上傳文件名?
我可以有示例代碼嗎? – dean 2011-06-01 11:05:19
爲什麼一個計時器,容器可以在會話空閒時給你一個回調。 – 2011-06-01 11:15:36
你說得對,我錯過了解釋這個問題。定時器根本不需要。 – 2011-06-01 11:32:37