一、Cookie
1、Cookie的本質與相關屬性Cookie是什麼?
Cookie:伺服器儲存到浏覽器的東西。它的形式是鍵值對(名+值為一個Cookie),是以它具有Name和Value屬性。
浏覽器怎麼判斷哪個伺服器/伺服器上的jsp檔案可以通路該Cookie呢?
Cookie具有Path屬性,它是浏覽器用來判斷伺服器能否通路該Cookie:若伺服器的檔案通路路徑包含Cookie路徑,那麼可以通路該Cookie;否則不能通路。
例如:Cooke1的Path為:/Project,jsp1的路徑(通路路徑):/Project/a.jsp,jsp2的路徑:/AProject/a.jsp。那麼jsp1可以通路Cookie1,而jsp2不可以通路Cookie1
Cookie儲存在浏覽器的哪裡,儲存多長時間呢?
Cookie可以儲存在記憶體或者硬碟中。若儲存在記憶體中,浏覽器關閉就清除Cookie;若儲存在硬碟中,則會儲存Cookie最大生命周期時間。
Cookie的MaxAge屬性,是與Cookie生命周期相關的屬性。如果MaxAge>0,那麼Cookie會在硬碟中儲存,儲存其數值的時間(機關是秒);如果MaxAge=0,那麼Cookie會被立刻删除;如果MaxAge<0,那麼Cookie在記憶體中儲存,關閉浏覽器時清除Cookie。
Cookie相關内容補充
Cookie是由Http協定制定的(由浏覽器建立對象)。
擁有9大内置對象(包括request、response)。
Cookie的實作(相關方法)
Cookie[] request.getCookies(); // 傳回所有Cookie對象(以Cookie數組形式)
void response.addCookie(String name,String value); // 向浏覽器中存入給定名與值的Cookie
二、Session
Session是什麼?
Session:由伺服器建立并儲存在伺服器端的,面向一次會話,以參數Attribute(名+值)形式儲存資料的東西
- 伺服器建立,儲存在伺服器端
- 調用getSession方法時,若Cookie有JSESSIONID,根據其找Session,若沒有就重新建立Session并儲存對應的JSESSIONID在Cookie上;若沒有JSESSIONID,則新建立Session,同時儲存JSESSIONID在Cookie上
- 以參數(名+值)形式儲存資料
- 一次會話(時間)中,一個伺服器的多個Servlet/Jsp對象共享
- 多個浏覽器/用戶端通路伺服器時,每個會話都會建立新的Session
Session的實作
/* Session的使用*/
配置Session最大不活動時間
//位置:web.xml檔案
<session-config>
<session-timeout>數值(機關為min)<session-timeout/>
</session-config>
Session于依賴Cookie或者是URL重寫,怎麼了解?
>Session的建立需要SessionId,Cookie存儲SessionId,是以有Cookie必定可以使用Session,即Session依賴于Cookie。
>通過URL重寫,把SessionId放在通路伺服器網頁的URL中,也可以起到相同效果,是以Session也可以依賴于URL重寫
//URL重寫的實作
//位置: xxx.jsp
<a href="<%= response.encodeURL(/Project1/Aservlet) %>" target="_blank" rel="external nofollow" >點選這裡<a/>