介紹會話技術、Cookie的API、詳解、應用
什么是會話技術

基本概念 : 指用戶開一個瀏覽器,訪問一個網站 , 只要不關閉該瀏覽器,不管該用戶點擊多少個超鏈接,訪問多少資源,直到用戶關閉瀏覽器,整個這個過程我們稱為一次會話 .
為什么我們要使用會話技術?
會話跟蹤技術可以解決我們很多很多問題。
( 1 ) 在論壇登陸的時候, 很多時候會有一個小框框問你是否要自動登陸,當你下次登陸的時候就不用輸入密碼了
(2) 根據我以前瀏覽過的商品,猜我喜歡什么商品
會話跟蹤技術有 Cookie 和 Session , Cookie 技術是先出現的 。我們先講 Cookie 技術吧。
什么是 Cookie
Cookie 是由 W3C 組織提出,最早由 netscape 社區發展的一種機制
(1)網頁之間的 交互是通過HTTP協議傳輸數據的, 而Http協議是 無狀態的協議 。無狀態的協議是什么意思呢? 一旦數據提交完后,瀏覽器和服務器的連接就會關閉,再次交互的時候需要重新建立新的連接 。
(2)服務器無法確認用戶的信息,于是乎,W3C就提出了: 給每一個用戶都發一個通行證,無論 誰訪問 的時候都需要攜帶通行證,這樣服務器就可以從通行證上確認用戶的信息 。通行證就是Cookie
Cookie 的流程:瀏覽器訪問服務器, 如果服務器需要記錄該用戶的狀態,就使用 response 向瀏覽器發送一個 Cookie ,瀏覽器會把 Cookie 保存起來。當 瀏覽器再次訪問服務器的時候,瀏覽器會把請求的網址連同 Cookie 一同交給服務器 。
Cookie API
( 1 ) Cookie 類用于 創建一個 Cookie 對象
( 2 ) response 接口中定義了一個 addCookie 方法,用于在響應 頭增加 一個相應的 Set-Cookie 頭字段
( 3 ) request 接口中定義了一個 getCookies 方法,它用于獲取客戶端提交的 Cookie
常用的 Cookie 方法:
( 1 ) public Cookie(String name,String value)
(2) setValue 與 getValue 方法
(3) setMaxAge 與 getMaxAge 方法
(4) setPath 與 getPath 方法
(5) setDomain 與 getDomain 方法
(6) getName 方法
簡單使用Cookie
創建Cookie對象,發送Cookie給瀏覽器
Cookie細節
Cookie不可跨域名性
(1)很多人在初學的時候可能有一個疑問:在訪問Servlet的時候瀏覽器 是不是把所有的Cookie都帶過去給服務器 , 會不會修改了別的網站的Cookie
(2) 答案是否定的。Cookie具有不可跨域名性。瀏覽器判斷 一個網站是否能操作另一個網站的Cookie的依據是域名 。所以一般來說, 當我訪問 baidu 的時候,瀏覽器只會把 baidu 頒發的Cookie帶過去,而不會帶上google的Cookie。
Cookie保存中文
中文屬于Unicode字符,英文數據ASCII字符,中文占4個字符或者3個字符,英文占2個字符。
解決: Cookie使用Unicode字符時需要對Unicode字符進行編碼。
Cookie保存在硬盤的中文數據是經過編碼的,那么我們在 取出Cookie的時候要對中文數據進行解碼
Cookie的有效期
Cookie 的有效期是通過 setMaxAge () 來設置的 。
? 如果 MaxAge 為 正數 , 瀏覽器會把Cookie寫到硬盤中,只要還在 MaxAge 秒 之前,登陸網站時該Cookie就有效 【不論關閉了瀏覽器還是電腦】
? 如果 MaxAge 為 負數 , Cookie是臨時性的,僅在本瀏覽器內有效 ,關閉瀏覽器Cookie就失效了,Cookie不會寫到硬盤中。Cookie默認值就是-1。 這也就為什么在我第一個例子中,如果我沒設置Cookie的有效期,在硬盤中就找不到對應的文件。
? 如果 MaxAge 為 0 ,則表示 刪除該Cookie 。Cookie機制沒有提供刪除Cookie對應的方法,把 MaxAge 設置為0等同于刪除Cookie
Cookie的修改和刪除
? 上面我們已經知道了Cookie機制沒有提供刪除Cookie的方法。其實細心點我們可以發現,Cookie機制也沒有提供修改Cookie的方法。那么我們 怎么修改Cookie的值呢 ?
? Cookie存儲的方式 類似于Map集合 ,如下圖所示
? Cookie的名稱相同,通過response添加到瀏覽器中,會覆蓋原來的Cookie 。
? 以country為名保存的是%E4%B8%AD%E5%9B%BD,下面我 再以country為名, 把值改變 一下 。
? 現在我要刪除該Cookie, 把 MaxAge 設置為0,并添加到瀏覽器中即可
Cookie的域名
Cookie 的 domain 屬性決定運行訪問 Cookie 的域名。 domain 的值規定為 “. 域名 ”
C ookie的隱私安全機制決定Cookie是不可跨域名的。也就是說www.baidu.com和www.google.com之間的Cookie是互不交接的。即使是同一級域名,不同二級域名也不能交接,也就是說:www.goole.com和www.image.goole.com的Cookie也不能訪問
現在我希望 一級域名相同的網頁Cookie之間可以相互訪問。也就是說www.image.zhongfucheng.com可以獲取到www.zhongfucheng.com的Cookie 就需要使用到domain方法。
Cookie的路徑
Cookie 的 path 屬性決定允許訪問 Cookie 的路徑
Cookie的安全屬性
(1)HTTP協議不僅僅是無狀態的,而且是不安全的!如果不希望Cookie在非安全協議中傳輸,可以 設置Cookie的secure屬性為true,瀏覽器只會在HTTPS和SSL等安全協議中傳輸該Cookie 。
(2) 當然了,設置secure屬性不會將Cookie的內容加密。如果想要保證安全,最好使用md5算法加密
HTTP 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。