會話跟蹤技術:cookie 和 session

http協議是無狀態協議,當用戶發送一次請求之後,本次會話就結束了,下次再發送請求的時候,就需要服務器來確認來訪請求的身份是屬於哪個會話的,常用的2種會話跟蹤技術就是Cookie和Session,下面就這2種的用法總結一下。

Cookie:

cookie是存儲在瀏覽器上,爲同一用戶的不同請求之間的數據共享提供支持,要使用cookie,首先要在服務端進行設置,然後返回給客戶端保存,在之後的請求中,會攜帶cookie數據,服務器根據cookie中的信息確認這個身份是否正確。

使用過程:

1、新建一個cookie對象:Cookie  coo = new Cookie(key,value);

2、設置cookie屬性:coo.setMaxAge(int Seconds),設置過期屬性,在該時間範圍內會自動攜帶,此時cookie保存在硬盤上;coo.setPath(uri),設置URI信息,訪問該URI時候纔會攜帶cookie信息;

3、將cookie添加到響應中返回給瀏覽器:resp.addCookie(coo);

4、解析cookie :req.getCookies() 返回cookie數組,遍歷解析

注意:

     在未清除瀏覽器緩存的時候,cookie保存之後,在下次發送其他請求時,會自動攜帶cookie信息;如果設置了生效URI,會在指定的URI使用cookie,其他的不會攜帶;當瀏覽器關閉之後,重新打開訪問時,設置了過期時間的cookie還在,沒有設置的已經不再了,由此說明:未設置過期的cookie是存在於瀏覽器的運行內存中的,設置之後,存在於硬盤上的;

    在清除瀏覽器的緩存後,不管是否設置過期時間,都會被清除cookie;

5、cookie 可以設置跨域共享:coo.setDomain(".baidu.com"); 設置之後,即可在以baidu.com爲結尾的網址下進行cookie共享;

6、cookie設置有效路徑:coo.setPath("/test");設置後,在/test路徑下的頁面纔有cookie權限

應用:用戶登錄後,將特定的字符放在cookie中,下次請求進來,服務器根據cookie中的內容識別是否正確;如單點登錄就是利用cookie進行的;

Session:

和cookie不同,session存放在服務器的內存中,對瀏覽器來說是透明的。session支持各種數據類型和實體類型,而cookie只支持簡單的數據類型。對服務器的內存壓力增大。

在Tomcat中,用戶第一次請求的時候,服務器會生成一個JSESSIONID放在cookie中,下次請求時,根據cookie中的值判斷是否和session.getId()相等來判斷是否同一會話。

使用方法:

HttpSession sess = request.getSesson();

sess.setAttribute("username","zhangsan");

sess.setAttribute("uuid",1212121);

獲取時:sess.getAttribute("uuid");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章