1. 程式人生 > >Tomcat原始碼分析(九)--Session管理

Tomcat原始碼分析(九)--Session管理

     客戶端第一次請求到伺服器連線,這個連線是沒有附帶任何東西的,沒有Cookie,沒有JSESSIONID。伺服器端接收到請求後,會檢查這次請求有沒有傳過來JSESSIONID或者Cookie,如果沒有JSESSIONID和Cookie,則伺服器端會建立一個Session,並生成一個與該Session相關聯的JSESSIONID返回給客戶端,客戶端會儲存這個JSESSIONID,並生成一個與該JSESSIONID關聯的Cookie,第二次請求的時候,會把該Cookie(包含JSESSIONID)一起傳送給伺服器端,這次伺服器發現這個請求有了Cookie,便從中取出JSESSIONID,然後根據這個JSESSIONID找到對應的Session,這樣便把Http的無狀態連線變成了有狀態的連線。但是有時候瀏覽器(即客戶端)會禁用Cookie,我們知道Cookie是通過Http的請求頭部的一個cookie欄位傳過去的,如果禁用,那麼便得不到這個值,JSESSIONID便不能通過Cookie傳入伺服器端,當然我們還有其他的解決辦法,url重寫和隱藏表單,url重寫就是把JSESSIONID附帶在url後面傳過去。隱藏表單是在表單提交的時候傳入一個隱藏欄位JSESSIONID。這兩種方式都能把JSESSIONID傳過去。