1. 程式人生 > >Servlet中呼叫request.getSession()中低層發生了什麼事件??

Servlet中呼叫request.getSession()中低層發生了什麼事件??

訪問方式:瀏覽器->伺服器

1.如果servlet中沒有呼叫request.getSession()方法,那麼伺服器永遠都不會建立JSESSIONID。

2.如果servlet中呼叫request.getSession()方法那麼情況分為以下兩種情況:

 2.1  如果是第一次訪問servlet,那麼request.getSession()會建立一個JSESSIONID,並且在響應頭裡面有設定:

 Set-Cookie:JSESSIONID=********************************; Path=/虛擬專案名; HttpOnly

2.2  如果不是第一訪問servlet,那麼此次瀏覽器訪問該專案的時候,請求頭會帶有:

Cookie:JSESSIONID=*********************************

request.getSession()會先去獲取請求頭的JSESSIONID,並且在伺服器裡面查詢該ID,如果該session物件還存活(tomcat預設session的存活時間為30分鐘,過了30分鐘後,該session物件會被摧毀)則直接獲取該session,如果該session已經被摧毀了,則重新又建立一個session物件,重複步驟2.1.

注意:jsp預設呼叫getSession()方法。