Jsessionid只是tomcat的對sessionid的叫法,其實就是sessionid;在其它的容器也許就不叫jsessionid了。
首先談一下對session物件在web開發中的創建以及sessionId生成並返回客戶端的運行機制.
session物件當客戶端首次訪問時,建立一個新的session物件.並同時產生一個sessionId,並在此次回應中將sessionId以回應報文的方式些回客戶端瀏覽器記憶體或以重寫url方式送回客戶端,來保持整個會話,只要sever端的這個session物件沒有銷毀,以後再調用request.getSession() 時就直接根據客戶端的sessionId來檢索server端生成的session物件並返回,不會再次去新建,除非根據此sessionId沒有檢索到session物件。
下面是在IE下測試,因為IE6.0的一個BUG就是IE的隱私設定即使是阻止所有cookie時,也還是會以會話cookie來保存sessionId.所以下面都是以會話cookie來討論的。
(1)、在server沒有關閉,並在session物件銷毀時間內,當客戶端再次來請求server端的servlet或jsp時, 將會將在第一次請求時產生的sessionId並附帶在請求資訊頭中並向server端發送,server端收到sessionId後根據此sessionId會去搜尋(此過程是透明的)server對應的session物件並直接傳回這個session物件,此時不會重新去建立一個新的session物件.
(2)、當server關閉(之前產生的session物件也就消亡了),或session物件過了其銷毀時間後, 瀏覽器視窗不關,並在本瀏覽器視窗再次去請求sever端的servlet和jsp時,此時同樣會將sessionId(server關閉或session銷毀時生成的sessionId)發送到server端,server根據sessionId去找其對應的session對象,但此時session對象已經不存在,此時會重新產生一個新的session物件,並產生新的sessionId並同樣將這個新產生的sessionId以回應封包的形式送到瀏覽器記憶體中.
(3) 、當server沒有關閉,並session物件在其銷毀時間內,當請求一個jsp頁面回客戶端後, 關閉此瀏覽器視窗,此時其內存中的sessionId也就隨之銷毀,在重新去請求sever端的servlet或jsp時,會重新產生一個sessionId給客戶端瀏覽器,並存在瀏覽記憶體中.
#總結,jsessionid的工作流程可以簡單用下面的圖表示:
#相關學習推薦:java基礎
以上是jsessionid怎麼產生的詳細內容。更多資訊請關注PHP中文網其他相關文章!