1.HTTP協議無狀態:客戶端的請求與服務器的響應所發生的一系列行為
簡單的說是客戶發送了請求,服務器就給客戶端響應,
它們彼此之間都沒有記錄下來。
如:
顧客與自動售貨機
普通顧客(非會員)與商場
2.cookie:把用戶信息存放在客戶端瀏覽器中,名-值
1)分類:
A.不設置過期時間:cookie存放在內存,瀏覽器關閉,則cookie消失
B.設置過期時間:cookie存放在硬盤上,瀏覽器關閉再打開,cookie還在,
直到超過過期時間。瀏覽器可共享此cookie的數據。
2)操作步驟:
第一:實例化Cookie對象:Cookie ck = new Cookie("名","值") ;
第二:添加Cookie對象:響應對象.addCookie(cookie對象) ;
注:在發送客戶端瀏覽器之前可以,設置存活時間:
cookie對象.setMaxAge(秒) ;
第三:讀取Cookie對象的數據
Cookie[] cookie數組對象 = request.getCookies()
for (Cookie ck : cookie數組對象) {
System.out.println(ck.getName()+"->"+ck.getValue());
}
3.HttpSession:HttpSession依賴Cookie,所以說,要是你報cookie禁用了,那么HttpSession就失效,把用戶信息存放在服務器中的web容器中
工作原理
3.HttpSession:會話對象
1)獲取會話對象
請求對象.getSession(false):
獲取會話對象,如果存在會話對象,則返回,如果不存在會話對象,則返回null
請求對象.getSession() 等同於 請求對象.getSession(true)
獲取會話對象,如果存在會話對象,則返回,如果不存在會話對象,則創建一個新的會話對象
2)常見方法
setAttribute(“屬性名”,”屬性值”) 根據屬性名設值
getAttribute(“屬性名”) 根據屬性名 獲取對應的值
removeAttribute(“屬性名”) 根據屬性名刪除
getId():獲取Session唯一的ID
invalidate():使HttpSession對象失效
setMaxInactiveInterval(時間):設置Session過期時間,單位是秒
getCreationTime():獲取HttpSession對象創建時間
getLastAccessedTime():獲取HttpSession最近一次請求時間
3)會話失效的方法有:
a.超時
b.手動失效:調用invalidate()方法
c.程序結束(web服務器關閉,切記不是瀏覽器關閉)
注:瀏覽器關閉后,Session對象失效了碼? -> 答案:沒有失效,在服務器仍然存在,
4.地址重寫
1)響應對象.encodeRedirectURL("地址")
2)形式(語法)
a.URL地址;jsessionid=4BA4A5C6F5268E1FE3227AEB1A251E97
b.URL地址?參數名1=值1&參數名2=值2&...&參數名n=值n;jsessionid=4BA4A5C6F5268E1FE3227AEB1A251E97
5.表單隱藏域
<form action="" method="">
相關的表單控件...
<input type="hidden" name="參數名1" value="參數值1"/>
...
<input type="hidden" name="jsessionid" value="xxxxx"/>
<input type="hidden" name="參數名n" value="參數值n"/>
</form>