『壹』 javascript清除session的問題
這樣應該很難實現的.但可以想一起不常用的辦法.
首先,session是用戶級的一個全局變數,也就是說不管你是子頁還是父頁都是一樣的session,而不會存在什麼子頁的春臘session或是父頁的session,它們是一個,不管你有多少個頁面在未超時的情況下都是一個session的.
所以,這樣你可以讓你的存活時間改為0,也就是只有瀏覽器打開時是存活的,瀏覽器關閉時即可關閉就可以了.不知道你是出於什麼樣的目的來做這個代碼的.
當然,因為是用戶級的,所以如果設置時間為0時,所有的用戶都是一樣的.如果想實現某一個用戶關閉就關閉時,不能這行行樣設置的.一個例子,所有的用戶都是關閉網頁時30分鍾取消session,這個值的設置是在application,站在了服務端的全局,所以不能對特定的一個用戶進行設置的.雖然可以使用頁面中,頁面級可以,但用戶級,還是特定用戶時,可以使用session來做一下.
用戶打開一個頁面時,用session("pagecount")賦值為1,當然再打開一個就加1,這樣可以統計當前用戶打開了多少個頁面的.關閉一個就減1.
判斷一下你這個是否是那個特殊的用戶,若是,則檢查其session("pagecount"),如果這個值是1時,在關閉時可以直接清除session,若不是1時,將其值減1,這樣做的目的,只是對於特定用戶進行的有效清除.
當然,如果是所以用戶都是這樣子的話,一定要用timeout進行設置,這樣非常方便.
在打開一個瀏覽器中可以這樣寫:
if
isnull(session("pagecount"))
then
session("pagecount")=1
else
session("pagecount")=session("pagecount"+1)
end
if
關閉瀏覽器的事件中可以這樣寫:
if
session("pagecount")
=
1
then
'這里清除session
else
session("pagecount")
=
session("pagecount")-1
end
if
這樣可以實現當關閉最後一個窗口時清除session.當然,這些還要加上對用戶的判斷,可以實現對特定用戶用行特定清除.而不是所有用戶.
還打可實現,關閉第一個頁面時進行清除,比如用戶打了第一個頁面,用session變數記錄下來,關閉時檢查是否為記錄的頁面,若是,則清除檔森嘩session或者幹些其他的事.
『貳』 java session在什麼時候使用不了
一般情況下,session都是存儲在內存里,當伺服器進程被停止或者重啟的時候,內存里的session也會被清空,如果設置了session的持久化特性,伺服器就會把session保存到硬碟上,當伺服器進程重新啟動或這些信息將能夠被再次使用。
1、session在何時被創建
一個常見的誤解是以為session在有客戶端訪問時就被創建,然而事實是直到某server端程序調用HttpServletRequest.getSession(true)這樣的語句時才被創建,注意如果JSP沒有顯示的使用 <%@page session="false"%>關閉session,則JSP文件在編譯成Servlet時將會自動加上這樣一條語句HttpSession session = HttpServletRequest.getSession(true);這也是JSP中隱含的session對象的來歷。
由於session會消耗內存資源,因此,如果不打算使用session,應該在所有的JSP中關閉它。
2、session何時被刪除
綜合前面的討論,session在下列情況下被刪除a.程序調用HttpSession.invalidate();或b.距離上一次收到客戶端發送的session id時間間隔超過了session的超時設置;或c.伺服器進程被停止(非持久session)
3、如何做到在瀏覽器關閉時刪除session
嚴格的講,做不到這一點。可以做一點努力的辦法是在所有的客戶端頁面里使用javascript代碼window.oncolose來監視瀏覽器的關閉動作,然後向伺服器發送一個請求來刪除session。但是對於瀏覽器崩潰或者強行殺死進程這些非常規手段仍然無能為力。
4、有個HttpSessionListener是怎麼回事
你可以創建這樣的listener去監控session的創建和銷毀事件,使得在發生這樣的事件時你可以做一些相應的工作。注意是session的創建和銷毀動作觸發listener,而不是相反。類似的與HttpSession有關的listener還有HttpSessionBindingListener,HttpSessionActivationListener和HttpSessionAttributeListener。