當前位置:編程學習大全網 - 編程語言 - java裏關於session的問題(非hibernate)

java裏關於session的問題(非hibernate)

代碼我這裏就不給妳詳細寫了!我把大概思路給妳說下,也沒有什麽難點。妳壹看就會了!

首先,妳只要將用戶信息放在session中,其他的妳就不管了,然後

在config/web.xml中配置Session的缺省失效時間,單位為分鐘,例如:

<session-config>

<session-timeout>30</session-timeout>

</session-config>

在具體Web應用WEB-INF/web.xml中配置Session失效時間,單位為分鐘,例如:

<session-config>

<session-timeout>30</session-timeout>

</session-config>

在Web應用中配置的Session失效時間只對這個Web應用起作用。 如果沒有為Web應用指定Session失效時間,將使用config/web.xml作為缺省配置。

妳只要這樣配置好了以後,無需在程序中編寫專門判斷事件觸發的代碼。因為session在用戶信息中如果用戶處於活動狀態session則會壹直存活下去,如果用戶沒有處於活動狀態那麽session會根據妳的配置信息開始即時直到指定時間則會自動將session失效,妳只需要編寫壹個失效後的頁面給出給連接跳轉到登陸頁面就可以了!如果妳還要做其他的話那就需要涉及到監聽了,那樣寫起來和在寫壹個servlet差不多的,我這裏給妳壹個參考妳看看吧!

具體設置如下:

在主頁面或者公***頁面中加入:

session.setMaxInactiveInterval(1800); 參數1800單位是秒,即在沒有活動30分鐘後,session將失效。這裏要註意這個session設置的時間是根據服務器來計算的,而不是客戶端。所以如果是在調試程序,應該是修改服務器端時間來測試,而不是客戶端。在壹般系統中,也可能需要在session失效後做壹些操作,(1)控制用戶數,當session失效後,系統的用戶數減少壹個等,控制用戶數在壹定範圍內,確保系統的性能。(2)控制壹個用戶多次登錄,當session有效時,如果相同用戶登錄,就提示已經登錄了,當session失效後,就可以不用提示,直接登錄了那麽如何在session失效後,進行壹系列的操作呢?這裏就需要用到監聽器了,即當session因為各種原因失效後,監聽器就可以監聽到,然後執行監聽器中定義好的程序,就可以了。監聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法自己可以繼承這個類,然後分別實現。sessionCreated指在session創建時執行的方法sessionDestroyed指在session失效時執行的方法給壹個簡單的例子:public class SessionListener implements HttpSessionListener{ public void sessionCreated(HttpSessionEvent event) { HttpSession ses = event.getSession(); String id=ses.getId()+ses.getCreationTime(); SummerConstant.UserMap.put(id, Boolean.TRUE); //添加用戶} public void sessionDestroyed(HttpSessionEvent event) { HttpSession ses = event.getSession();String id=ses.getId()+ses.getCreationTime(); synchronized (this) { SummerConstant.USERNUM--; //用戶數減壹 SummerConstant.UserMap.remove(id); //從用戶組中移除掉,用戶組為壹個map } }}然後只需要把這個監聽器在web.xml中聲明就可以了例如:<listener> <listener-class> com.summer.kernel.tools.SessionListener </listener-class> </listener>

差不多應該就是這些吧!我不知道我這樣說妳能不能理解!

  • 上一篇:新時代好少年強國有我征文500字(10篇)
  • 下一篇:什麽是UI設計?
  • copyright 2024編程學習大全網