更新時間:2018-08-31 來源:黑馬程序員技術(shù)社區(qū) 瀏覽量:
一、 會話技術(shù)概述?
1、 什么是一次會話
用戶打開瀏覽器訪問某個網(wǎng)站, 在這個網(wǎng)站上瀏覽任意頁面, 訪問完成后將瀏覽器關(guān)閉的過程稱為是一次會話.
2、 學(xué)習(xí)會話要解決的問題是什么?
會話技術(shù)是用于解決, 在會話過程中數(shù)據(jù)的保存問題。
3、 常用的會話技術(shù)有哪些
Cookie: 將數(shù)據(jù)保存到客戶端瀏覽器。
Session: 將數(shù)據(jù)保存到服務(wù)器端。
二、 Cookie詳解
1、 Cookie是什么?
Cookie是一個小信息, 由服務(wù)器寫給瀏覽器的并且由瀏覽器來保存。
客戶端保存的Cookie信息, 可以再次帶給服務(wù)器。
2、 創(chuàng)建Cookie
Cookie cookie = new Cookie("username", "admin");
//設(shè)置cookie的有效路徑, 將有效路徑設(shè)置為當(dāng)前應(yīng)用, 則訪問當(dāng)前應(yīng)用下的所有資源, 瀏覽器都會帶著它給服務(wù)器。
cookie.setPath(request.getContextPath());
//設(shè)置cookie的有效時間, 不設(shè)置就是會話過程, cookie存在瀏覽器的內(nèi)存中
cookie.setMaxAge(60 * 60 * 24 * 7);
//將cookie輸出到客戶端
response.addCookie(cookie);
3、 獲取Cookie
// 獲得瀏覽器帶過來的所有的Cookie
Cookie[] cookies = request.getCookies();
4、 Cookie的分類
會話級別: 當(dāng)沒有設(shè)置Cookie的有效時間, 默認(rèn)就是會話級別的Cookie.關(guān)閉瀏覽器Cookie就會銷毀.
持久級別: 通過設(shè)置Cookie的有效時間.那么關(guān)閉瀏覽器Cookie還會存在.
5、 刪除持久級別的Cookie
//通過setMaxAge(0), 可以銷毀持久級別的Cookie。 但前提條件是, Cooike的有效路徑必須一致。
Cookie cookie = new Cookie("username",null);
cookie.setPath(request.getContextPath());
cookie.setMaxAge(0);
response.addCookie(cookie);
三、 Session詳解
1、 Session是什么?
Session是一個域?qū)ο螅?可以用于保存用戶數(shù)據(jù)
Session的作用域范圍是一次會話
2、 創(chuàng)建Session對象
服務(wù)器端第一次調(diào)用request.getSession()時創(chuàng)建session
3、 銷毀Session對象
Session過期。
注: 默認(rèn)過期時間為30分鐘, 可以通過配置web.xml修改Session的過期時間
例:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
非正常關(guān)閉服務(wù)器。
注: 如果正常關(guān)閉服務(wù)器, session會序列化到硬盤.當(dāng)服務(wù)器重新啟動時, 會執(zhí)行反序列化。
調(diào)用session.invalidate()方法。
4、 Session的執(zhí)行原理
當(dāng)服務(wù)器端第一次調(diào)用request.getSession()的時候, 服務(wù)器會自動為其創(chuàng)建一個Session對象, 并通過Cookie技術(shù)將Session的id, 發(fā)送給客戶端瀏覽
器。 以后客戶端再請求本應(yīng)用中其他資源的時候, 會自動將此Cookie攜帶到服務(wù)器端。 這樣, 服務(wù)器端在接到請求時候, 就會收到Session的id, 并根據(jù)id在
內(nèi)存中找到之前創(chuàng)建的Session對象, 提供給請求使用。
作者:黑馬程序員技術(shù)社區(qū)
首發(fā):http://java.itheima.com/