Serlvet之cookie和session學習
阿新 • • 發佈:2020-06-24
HTTP 協議
Web通訊需要一種語言,就像中國人講中文,歐美說英文,Web使用的HTTP協議,也叫超文字協議。
使用HTTP協議的人分為兩類:客戶端和服務端。請求資源的角色是客戶端,提供資源的是服務端。
HTTP協議是一個很神奇的東西,他只負責說話,至於說了什麼他也不知道。所以HTTP是無狀態的協議。
會話
HTTP是沒有狀態,但是人們是有記憶的,人們想讓HTTP記住某些東西,然後就提出幾種解決方案:
- 隱藏域表單
- 重寫url
- cookie
- session
cookis簡介
cookie是小段的文字資訊(微型redis資料庫),大小為4kb左右,放在瀏覽器的記憶體或者磁碟中,可以設定存活時間,瀏覽器關閉就消失了。除非儲存在磁碟。
cookies使用場景
- 記住使用者名稱和密碼
- 購物車
- 定向廣告
傳送cookies
- 建立cookies
- 設定最大時效
- 將Cookie放入到HTTP響應報頭
Cookie c = new Cookie("userID","a1234");
c.setMaxAge(60*60*24*7);
response.addCookie(c)
複製程式碼
讀取Cookie
String cookieName = "userID";
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies){
if (cookieName.equals(cookie.getName())){
doSomethingWith(cookie.getValue());
}
}
}
複製程式碼
session
存在伺服器記憶體的文字資訊(微型redis資料庫)
建立session
HttpSession session = request.getSession;
複製程式碼
HttpSession的API
pubic Object getAttribute(String name); //根據name 獲取屬性的值
public void setAttriute(String name,Object value) ; //設定一個名稱和對應的值
public void logout() //將會話從客戶端登出
複製程式碼
session使用場景
- 購物車
- 驗證碼
cookie與session區別
cookie | session |
---|---|
存在瀏覽器 | 存在服務端 |
安全係數低 | 較安全 |
參考:
<< servlet與jsp核心程式設計 >>
<< servlet和jsp學習指南 >>
<< 圖解HTTP >>