cookie&session

自我理解:cookie是往客戶端存數據 session是在服務器存數據 。session通常藉助於cookie和客戶端完成一個完整的回話(多次請求 用相同的數據)所以作用域是一次繪畫

cookie技術:

1服務器端向客戶端發送一個Cookie

1)創建Cookie:

Cookie cookie = new Cookie(String cookieName,String cookieValue);

示例:

Cookie cookie = new Cookie("username","zhangsan");

那麼該cookie會以響應頭的形式發送給客戶端:

注意:Cookie中不能存儲中文

 

2)設置Cookie在客戶端的持久化時間:

cookie.setMaxAge(int seconds); ---時間秒

注意:如果不設置持久化時間,cookie會存儲在瀏覽器的內存中,瀏覽器關閉 cookie信息銷燬(會話級別的cookie),如果設置持久化時間,cookie信息會     被持久化到瀏覽器的磁盤文件裏

示例:

cookie.setMaxAge(10*60);

設置cookie信息在瀏覽器的磁盤文件中存儲的時間是10分鐘,過期瀏覽器      自動刪除該cookie信息

 

3)設置Cookie的攜帶路徑:

cookie.setPath(String path);

注意:如果不設置攜帶路徑,那麼該cookie信息會在訪問產生該cookie的      web資源所在的路徑都攜帶cookie信息

示例:

cookie.setPath("/WEB16");

代表訪問WEB16應用中的任何資源都攜帶cookie

cookie.setPath("/WEB16/cookieServlet");

代表訪問WEB16中的cookieServlet時才攜帶cookie信息

 

4)向客戶端發送cookie:

response.addCookie(Cookie cookie);

 

5)刪除客戶端的cookie:

如果想刪除客戶端的已經存儲的cookie信息,那麼就使用同名同路徑的持久化時    間爲0的cookie進行覆蓋即可

1服務器端怎麼接受客戶端攜帶的Cookie

cookie信息是以請求頭的方式發送到服務器端的:

1)通過request獲得所有的Cookie:

Cookie[] cookies = request.getCookies();

2)遍歷Cookie數組,通過Cookie的名稱獲得我們想要的Cookie

for(Cookie cookie : cookies){

if(cookie.getName().equal(cookieName)){

String cookieValue = cookie.getValue();

}

}

Session技術

Session技術是將數據存儲在服務器端的技術,會爲每個客戶端都創建一塊內存空間      存儲客戶的數據,但客戶端需要每次都攜帶一個標識ID去服務器中尋找屬於自己的內    存空間。所以說Session的實現是基於Cookie,Session需要藉助於Cookie存儲客 戶的唯一性標識JSESSIONID

1獲得Session對象

HttpSession session = request.getSession();

此方法會獲得專屬於當前會話的Session對象,如果服務器端沒有該會話的Session      對象會創建一個新的Session返回,如果已經有了屬於該會話的Session直接將已有      的Session返回(實質就是根據JSESSIONID判斷該客戶端是否在服務器上已經存在    session了)

 

2怎樣向session中存取數據(session也是一個域對象)

Session也是存儲數據的區域對象,所以session對象也具有如下三個方法:

session.setAttribute(String name,Object obj);

session.getAttribute(String name);

session.removeAttribute(String name);

 

3Session對象的生命週期(面試題/筆試題)

創建:第一次執行request.getSession()時創建

銷燬:

1)服務器(非正常)關閉時

2)session過期/失效(默認30分鐘)

 

問題:時間的起算點 從何時開始計算30分鐘?

從不操作服務器端的資源開始計時

 

可以在工程的web.xml中進行配置

<session-config>

        <session-timeout>30</session-timeout>

</session-config>

3)手動銷燬session

session.invalidate();

 

作用範圍:

默認在一次會話中,也就是說在,一次會話中任何資源公用一個session對象

 

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