cookie和session是為了解決http協議無狀態特性而產生的. 換句話講, cookie和session就是為了儲存請求和響應過程中的資料的. cookie是儲存在客戶端的, session是儲存在伺服器端的.
1.1 概念
cookie, 餅乾. 是儲存在客戶端的少量資訊. cookie是乙個類, 在servlet中建立, 儲存了一些少量的資訊, 之後傳送到客戶端瀏覽器, 瀏覽器進行儲存, 在後續的訪問中, 瀏覽器會自動攜帶cookie資訊傳送到伺服器端.
cookie資訊包含乙個名稱, 乙個值和若干可選的屬性. 有些瀏覽器處理可選屬性時可能由bug, 所有要謹慎使用, 常用的可選屬性有: 路徑, 域限定符和最大存活時間.
1.2 **實現
public
}
1.3 cookie的特點
1.4 獲取cookie
cookie[
] cookies = req.
getcookies()
;for
(cookie cookie : cookies)
2.1 概念
session, 會話. 用來在伺服器端儲存使用者資訊, 實現跨頁面和多次訪問時標識客戶. 而session的跟蹤需要依賴cookie, session建立時, 會自動建立乙個cookie叫jsessionid, 用來記錄session的編號, 傳送到客戶端瀏覽器進行儲存, 後續客戶端會攜帶cookie繼續訪問伺服器, 通過jsessionid可以定位到session.
2.2 session的生命週期
public
}
作用域, 指的是乙個儲存空間, 在不同情況下用來儲存一些資訊. 一共有三種作用域, 分別是: httpservletrequest, httpsession, servletcontext. 使用作用域時, 掌握三個方法即可: setattribute, getattribute, removeattribute.
3.1request作用域
對應的物件是httpservletrequest, 生命週期: 一次請求, 只有在這次請求中才有效. 當使用request作用域時, 頁面跳轉方式只能使用請求**.
// 向作用域存放資料
req.
setattribute
("reqid"
, reqid)
;// 從作用域取值
object attr = req.
getattribute
("reqid");
// 從作用域刪除值
req.
removeattribute
("reqid"
);
3.2session作用域
對應的物件是httpsession, 生命週期: 第一次請求到來時建立session, session失效分為三種情況:
// 向作用域存放資料
req.
getsession()
.setattribute
("sid"
, sid)
;// 從作用域取值
object attr = req.
getsession()
.getattribute
("sid");
// 從作用域刪除值
req.
getsession()
.removeattribute
("sid"
);
對應的物件是servletcontext, 生命週期: 應用部署時被建立, 應用解除安裝或伺服器關機時被銷毀. 被所有使用者共享.
// 向作用域存放資料
getservletcontext()
.setattribute(;
// 從作用域取值
object attr =
getservletcontext()
.getattribute()
;// 從作用域刪除值
getservletcontext()
.removeattribute()
;
一文讀懂Nginx
問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...
一文讀懂SpringMVC
主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...
堆疊 一文讀懂
堆疊 stack 是一種先進後出的 操作受限的線性表,也可以直接稱為棧。可以把棧想象成乙個桶一樣,往這個桶裡面一層一層的放東西,先放進去的在裡面,後放進去的東西依次在外面。但取東西的時候就是先取靠近外面的,再依次一層層取裡面的。這就是 後進先出 last in first out 的原則。因此 棧 ...