Session.Abandon (當前頁面結束之后刪除Session對象) Session.Clear(清理Session對象中的內容)
Abandon
Abandon 方法刪除所有存儲在 Session 對象中的對象並釋放這些對象的源。如果您未明確地調用 Abandon 方法,一旦會話超時,服務器將刪除這些對象 。
語法Session.Abandon
注釋
Abandon 方法被調用時,將按序刪除當前的 Session 對象,不過在當前頁中所有腳本命令都處理完后,對象才會被真正刪除。這就是說,在調用 Abandon 時,可以在當前頁上訪問存儲在 Session 對象中的變量,但在隨后的 Web 頁上不行。
例如,在下列腳本中,第三行打印出 Mary 值。這是因為在服務器處理完腳本前沒有刪除 Session 對象。
<%
Session.Abandon
Session("MyName") = "Mary"
Reponse.Write(Session("MyName"))
%>
如果在隨后 Web 頁上訪問 MyName 變量,您將發現它是空的。這是因為當包含上一個例子的頁面結束處理時,MyName 同前面的 Session 對象一起被刪除了。
放棄會話並打開后面的 Web 頁時,服務器會創建新的 Session 對象。您可以在新的 Session 對象中存儲變量和對象。
示例
當服務器處理完當前頁時,下面示例將釋放會話狀態。
<% Session.Abandon %>
Clear
Session.Abandon 和Session.Clear有何不同
Session.Clear()就是把Session對象中的所有項目都刪除了,Session對象里面啥都沒有。但是Session對象還保留。
Session.Abandon()就是把當前Session對象刪除了,下一次就是新的Session了。
主要的不同之處在於:
當使用Session.Abandon時,會調用Session_End方法(InProc模式下)。當下一個請求到來時將激發Session_Start方法;而Session.Clear只是清除Session 中的所有數據並不會中止該Session,因此也不會調用那些方法。
http://copperfield.iteye.com/blog/890018
session.invalidate()是銷毀跟用戶關聯session,例如有的用戶強制關閉瀏覽器,而跟蹤用戶的信息的session還存在,可是用戶已經離開了。
雖然session 生命周期瀏覽默認時間30分,但是在30分鍾內別的用戶還可以訪問到前一個用戶的頁面,需銷毀用戶的session。
session.removeAttribute()移除session中的某項屬性。
在spring例子中寵物商店的注銷登錄的代碼:
request.getSession().removeAttribute("userSession");
// 注銷用戶,使session失效。
request.getSession().invalidate();