# session會話跟蹤技術 ###### tags: `Java Web-Servlet` ![](https://i.imgur.com/VsKVpSb.png) 客戶端進入後,服務器會判斷是否為首次進入,首次進入慧芬派一組新的ID,非首次則沿用舊ID ![](https://i.imgur.com/zF5C1jZ.png) 上圖的第二、第三次的ID,就是相同客戶端進入,所以顯示的ID也都相同 ![](https://i.imgur.com/iPlZWwV.png) 可以在瀏覽器的COOKIE查看 ![](https://i.imgur.com/Y4rR3lM.png) 或是利用debug的斷點查看,都顯示相同ID ![](https://i.imgur.com/F5A4V54.png) ### 1)Http是無狀態的 #### Http無狀態: 服務器無法判斷這兩次請求是同一個客戶端發過來的,還是不同的客戶端發過來的 #### 無狀態帶來的現實問題: 第一次請求是添加商品到購物車、第二次請求是結帳,如果這兩次請求服務器無法區分是同一個用戶,就會導致混亂 通過會話跟蹤技術來解決無狀態的問題 ### 2)會話跟蹤技術 客戶端第一次發請求給服務器,服務器獲取session,獲取不到,則創建新的,然後響應給客戶端 下次客戶端給服務器發請求時,會把sessionID帶給服務器,那麼服務器就能獲取到了,服務器就判斷這一次請求和上次某次請求是同一個客戶端,從而能區分開客戶端 #### 常用的API: request.getSession():獲取當前的會話,沒有則創建一個新的會話 request.getSession(true):效果和不帶參數相同 request.getSession(false):獲取當前會話,沒有則返回true,不會創建新的 session.getId():獲取sessionID session.isNew():判斷當前session是否是新的 session.getMaxInactiveInterval():session的非激活間隔時長,默認1800秒 session.setMaxInactiveInterval(): session.invalidate():強制性讓會話立即失效