Web學習之Session

1,什麼是Sessionhtml

Session通常譯爲會話,是解決Http協議的無狀態問題的方案,能夠將一次會話中的數據存儲在服務器端的內存中,保證在下一次的會話中可使用。java

在客戶端瀏覽器第一次向服務器端發送請求時,服務器端會爲這個客戶端建立獨有的Session,並具備惟一的Session ID,存儲在服務器端的內存中。在客戶端第二次訪問服務器端時,會攜帶Session ID在請求中,服務器端會根據Session ID查找對應的Session信息,進行進一步地操做。apache

在JavaEE中提供了javax.servlet.http.HttpSession接口,經過該接口能夠將共享的數據內容存儲在HttpSession對象中,從而解決Http協議的無狀態問題瀏覽器

2,Session與cookie的區別緩存

Session與Cookie都是解決Http協議的無狀態問題,可是二者之間仍是存在必定區別的:安全

  • Cookie數據存儲在客戶端的瀏覽器內存中或本地緩存文件中,Session數據存儲在服務器端的內存中。
  • Cookie數據存儲安全性較低,Session數據存儲安全性較高。
  • Session數據存儲在服務器端內存中,訪問增多時,下降服務器端性能。而Cookie則不會對服務器端性能形成影響。
  • 單個Cookie存儲的數據最大是4KB,一個網站只能存儲20個Cookie。Session則沒有這個問題。
  • Session在關閉瀏覽器時失效,而持久Cookie則能夠存儲更長有效時間。

總的來講,Session與Cookie各有優點,不能簡單來講誰更優。具體用法要考慮具體案例狀況而定。服務器

3,Session的實現原理cookie

在idea中使用上一個程序進行調試,訪問servlet並抓取內容,最後發現實際獲得的是org.apache.catalina.session.StandardSession對象,該對象是由Tomcat服務器的Session池建立,併爲該對象建立惟一的ID值。session

 

 最後結論:ide

由於Session使用的是會話Cookie,因此當瀏覽器關閉後,Session會失效。從新打開瀏覽器訪問對應Servlet時,服務器端會從新建立Session對象。可使用持久Cookie來延長Session的有效時間。

3,Session的額生命週期

  • Session的建立:在客戶端第一次向服務器端發送請求,並執行request.getSession()方法時。
  • Session的銷燬:
    • 不正常關閉瀏覽器時。(正常關閉瀏覽器,Session信息被序列化到硬盤中,保存在Tomcat服務器安裝目錄/work目錄)
    • Session信息過時時(Session默認的有效時間爲30分鐘)。

      能夠利用setMaxInactiveInterval(int interval)方法設置Session的有效時間。

    • 在服務器端程序中執行session.invalidate()方法,手動銷燬Session對象。

 

摘抄自:https://www.cnblogs.com/aaron911/p/7889353.html

 

因爲還在初學階段,對session的理解還不太透徹,只好經過別人已有的總結來理解session。

相關文章
相關標籤/搜索