Servlet
例項化
當用戶透過瀏覽器輸入一個路徑,這個路徑對應的servlet被呼叫的時候,該Servlet就會被例項化。
初始化
使用者定義Servlet 繼承了HttpServlet,同時也繼承了init(ServletConfig) 方法。init 方法是一個例項方法,所以會在構造方法執行後執行。
提供服務
接下來就是執行service()方法,然後透過瀏覽器傳遞過來的資訊進行判斷,是呼叫doGet()還是doPost()方法。
銷燬
在如下幾種情況下,會呼叫 destroy()
1。 該 Servlet 所在的 web 應用重新啟動,並且在 server。xml 中配置了
2。 關閉tomcat的時候 destroy()方法會被呼叫,但是這個一般都發生的很快,不易被發現。
被回收
當該Servlet被銷燬後,就滿足垃圾回收的條件了。 當下一次垃圾回收GC來臨的時候,就有可能被回收。
HttpSession
建立
在第一次呼叫 request。getSession() 方法時,伺服器會檢查是否已經有對應的session,如果沒有就在記憶體中建立一個session並返回。
javaee7 Api
銷燬
當一段時間內session沒有被使用(預設為30分鐘),則伺服器會銷燬該session。
如果伺服器非正常關閉(強行關閉),沒有到期的session也會跟著銷燬。
如果呼叫session提供的invalidate(),可以立即銷燬session。
javaee7 invalidate()
注意:伺服器正常關閉,再啟動,Session物件會進行鈍化和活化操作。同時如果伺服器鈍化的時間在session 預設銷燬時間之內,則活化後session還是存在的。否則Session不存在。 如果JavaBean 資料在session鈍化時,沒有實現Serializable 則當Session活化時,會消失。
Cookie
透過setMaxAge(int expiry)來設定cookie的生存時間,單位秒,負數-表示瀏覽器退出時銷燬;0-表示刪除cookie。
文件如下:
expiry -
an integer specifying the maximum age of the cookie in seconds; if negative, means the cookie is not stored; if zero, deletes the cookie。
javaee7
JavaScript 儲存物件
localStorage 用於長久儲存整個網站的資料,儲存的資料沒有過期時間,直到手動去除。
sessionStorage 用於臨時儲存同一視窗(或標籤頁)的資料,在關閉視窗或標籤頁之後將會刪除這些資料。
參考
https://www。cnblogs。com/skjsg/p/4707032。html
https://how2j。cn/stage/13。html
https://docs。oracle。com/javaee/7/api/toc。htm
https://www。runoob。com/jsref/prop-win-sessionstorage。html