javaweb的知識點總結(session和cookie)
1.什麼是會話 開啟瀏覽器,訪問伺服器,直到瀏覽器關閉,稱為一次會話 2.cookie Cookie是客戶端技術,程式把每個使用者的資料以cookie的形式寫給使用者各自的瀏覽器。當用戶使用瀏覽器再去 訪問伺服器中的web資源時,就會帶著各自的資料去。這樣,web資源處理的就是使用者各自的資料了
主要方法 Cookie(String name,String value) String getName() String getValue() void setValue(String newValue) void setMaxAge(int expiry) 使用者開一個瀏覽器,點選多個連結,訪問伺服器的多個web資源,然後關閉瀏覽器,整個過程稱為一次會話 int getMaxAge() 獲取cookies有效期 void setPath() String getPath() setDomain(String pattern)設定有效域 getDomain()
name:名字不能唯一確定一個cookie,路徑可能不同 value:不能存中文 path:客戶端訪問伺服器另外資源時,根據訪問的路徑來決定是否帶著cookie到伺服器, 當前訪問的路徑是以cookie的path開頭的路徑,瀏覽器就帶 maxAge:cookie的快取時間,預設是-1 負數:cookie的資料存在瀏覽器快取中 0:刪除 路徑要儲存一致,否則會刪錯 正數:快取持久化到磁碟上的時間
3.session(request.getSession) Session是伺服器端技術,利用這個技術,伺服器在執行時可以為每一個使用者的瀏覽器建立一個其獨享的session物件, 由於session為使用者瀏覽器獨享,所以使用者在訪問伺服器的web資源時,可以把各自的資料放在各自的session中, 當用戶再去訪問伺服器中的其它web資源時,其它web資源再從使用者各自的session中取出資料為使用者服務 void setAttribute(String name,Object value); Object getAttribute(String name); void removeAttribute(String name); HttpSession.getId(): setMaxInactiveInterval(int interval) 設定session的存活時間 invalidate() 使此會話無效
4.cookie和session的差別 A.cookie資料存放在客戶端的瀏覽器上,session資料放在伺服器 B.cookie不是很安全,別人可以分析存放在本地的cookie進行cookie欺騙安全的話還是用session C.session會在一定時間內儲存在伺服器上,當訪問增多或佔用伺服器效能 D.單個cookie儲存的資料不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie
5.cookie和session的應用場景 session登陸驗證資訊:session(Login)true和false 需要在頁面間傳遞的內容資訊,比如調查工作要好幾步,每一步都要儲存在session中,最後統一更新到資料庫 cookie:判斷使用者是否登陸過網站,以便下次登陸時能夠直接登陸,如果我們刪除cookie,每次登陸就要重新填寫相關資訊 另一個重要的應用是“購物車”中類的處理和設計。使用者可能在一段時間內在同一家網站的不同頁面選擇不同的商品, 可以將這些資訊都寫入cookie,在最後付款時從cookie中提取這些資訊
6.客戶端禁用Cookie後的會話資料儲存問題 客戶端禁用cookie:瀏覽器永遠不會向伺服器傳送cookie的請求訊息頭
解決方案: 方案一:在主頁上給出提示:請不要禁用您的cookie 方案二:URL重寫。必須對網站的所有地址都重寫。 http://url--->http://url;JSESSIONID=111 response.encodeURL(String url); 看瀏覽器有沒有傳送cookie請求訊息頭,沒有就重寫URL,有就不重寫。 request.getSession();必須寫