會話Cookie

會話

簡單理解:
用戶開一個瀏覽器,點擊多個超鏈接,訪問服務器多個web資源,然後關閉瀏覽器,
整個過程稱之爲一個會話

會話中要解決的一些問題

1.每個用戶與服務器進行交互的過程中,各自會有一些數據,程序要想辦法保存每個用戶的數據
2.例如用戶點擊超鏈接通過一個servlet購買了一個商品,程序應該保存用戶購買的商品,以便於用戶點結賬servlet時,結賬servlet可以得到用戶商品爲用戶結賬

3.思考:保存在request或servletContext中行不行 

              request不行購買結賬會創建2個不同的request,forword轉發可以實現,但是用戶體驗差,點擊購買就要結賬(轉發)

              servletContext全局容器,所有web資源共享,用戶間會互相影響

Cookie

客戶端技術,程序把每個用戶的數據以cookie的形式寫給用戶各自的瀏覽器,當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶着各自的數據去,這樣web資源處理的就是用戶各自的數據了

Session

服務器端技術,利用這個技術,服務器在運行時可爲每一個用戶的瀏覽器創建一個其獨享的session對象,由於session爲用戶瀏覽器獨享,所以用戶在訪問服務器的web資源時,可以把各自的數據放在各自的session中,當用戶再去訪問服務器中的其他web資源時,其他web資源再從用戶各自的session中取出數據爲用戶服務

Cookie API 學什麼技術看什麼API

javax.servlet.http.Cookie類用於創建一個Cookie,response接口也定義了一個addCookie方法,它用於在其響應頭中增加一個相應的Set-Cookie頭字段,同樣request接口中也定義了一個getCookies方法,它用於獲取客戶端提交的Cookie

Cookie類的方法:

public Cookie(String name,String value)
setValue getValue
setMaxAge getMaxAge Cookie的有效期秒爲單位 不調用有效期爲瀏覽器進程 寫到硬盤裏保存
setPath getPath 設置Cookie的有效目錄 不調用爲發出Cookie的servlet所在目錄
setDomain getDomain 設置Cookie的有效域 默認阻止第三方(拒收防止攻擊)
getName

如何保存用戶的數據

應用

顯示用戶上次訪問時間

response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
		
PrintWriter out = response.getWriter();
out.print("您上次訪問的時間是:");
		
//獲得用戶的時間cookie
Cookie cookie[] = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
	if(cookie[i].getName().equals("lastAccessTime")){
		long cookieValue = Long.parseLong(cookie[i].getValue());//獲得用戶的上次訪問時間
		Date date = new Date(cookieValue);
		out.print(date.toLocaleString());	
	}
}
		
//給用戶回送最新的訪問時間
Cookie cookie =new Cookie("lastAccessTime",System.currentTimeMillis()+"");
cookie.setMaxAge(1*30*24*3600);
cookie.setPath("/test");
		
response.addCookie(cookie);

Cookie細節

1.一個Cookie只能標識一種信息,它至少含有一個標識該信息的名稱(NAME)和設置值(VALUE)
2.一個web站點可以給一個web瀏覽器發送多個Cookie,一個web瀏覽器也可以存儲多個web站點提供的Cookie
3.瀏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制爲4KB
4.如果創建類一個cookie,並將他發送到瀏覽器,默認情況下它是一個會話級別的cookie(即存儲在瀏覽器的內存中),用戶退出瀏覽器即被刪除,若希望瀏覽器將該cookie存儲在磁盤上,則需要使用maxAge,並給出一個以秒爲單位的時間,最大時效設爲0則是命令瀏覽器刪除該cookie刪除cookie時,path必須一致,否則不會刪除

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