1 會話概念:簡單的理解,當你打開瀏覽器,然後點擊超鏈接,訪問服務器資源,最後斷開鏈接就是一次會話。
2 Cookie常用API:
創建Cookie:Cookie cookie = new Cookie(String name,String value),
設置Cookie存活時間:cookie.setMaxAge();
添加cookie到客戶端:response.addCookie(cookie);【上面三個一般都是配套使用的】
得到所有的Cookie: Cookie[] cookies = request.getCookies();【請注意返回的是Cookie[]】
得到Cookie的名字和值:cookie.getName,cookie.getValue
讓cookie死亡可以設置Cookie的存活時間爲0;
3 Cookie細節和缺點
* 更新Cookie必須保證Cookie的名一致,否則爲添加新的Cookie
* 一個瀏覽器可以接收多個Web站點的Cookie信息
* 一個瀏覽器存發Cookie的數目和容器有限
* 通過程序方式刪除Cookie的name和path要一致,其中path默認即當前web應用名,比例/day06
Cookie的缺點:1.Cookie只能接受String類型的參數;2.安全級別低,用戶可以自行刪除Cookie
4 HttpSession常用API
獲得HttpSession: HttpSession session = request.getSession(),
獲得session的ID:sessin.getId();
綁定信息到session:session.setAttribute("Name",username)
轉發:RequestDispatcher rd = request.getRequestDispatcher("/Demo42");
rd.forward(request,response);
5 HttpSession細節和缺點
a)在servlet中,只能request.getSession()才能在服務端創建與之對應的HttpSession
b)request.getSession()有二義性:
i)創建HttpSession,無->有
ii)查詢已存在的HttpSession,有->有
iii)創建HttpSession時,可以使用二種方式
* request.getSession():返回值必須有HttpSession(舊,新HttpSession)
* request.getSession(false) :返回值要麼爲舊HttpSession,要麼爲null值,但不會報錯
c)在默認情況下,每個瀏覽器獨享HttpSession,關閉後再打開,不能共享原HttpSession中的數據
d)可以以手工方式寫一個名爲JSESSIONID的Cookie,這樣可以在多個瀏覽器中共享原HttpSession中的數據
e)HttpSession的底層可以基於二種方式
>>Cookie形式
>>?jsessionid=******(即URL重寫)
缺點:
a)HttpSession受限於web服務器的運行內存空間
解決方案:使用web服務器自帶的掛起和激活功能來解決HttpSession空間受限的問題
b)創建HttpSession的代碼具有二義性,慎用
6 案例
1)顯示用戶最近瀏覽器過的圖書
2)購物車系統V1版
3)用戶登錄系統V1版
7 HttpSession如何銷燬
8 什麼樣的場景下選用不同的域對象[request/session/context]