1. 程式人生 > 其它 >MySQL丁奇45講(上)

MySQL丁奇45講(上)

Cookie&Session

1、會話

會話:使用者開啟一個瀏覽器,點選了很多超連結,訪問多個web資源,關閉瀏覽器,這個過程可以稱之為會話

一個網站,怎麼證明你來過?

客戶端 -----> 服務端

  1. 服務端給客戶端一個信件,客戶端下次訪問服務端帶上信件就可以; cookie
  2. 伺服器登記你來過了,下次你來的時候我來匹配你; session

2、儲存會話的兩種技術

cookie

  • 客戶端技術(響應,請求)

session

  • 伺服器技術,利用這個技術,可以儲存使用者的會話資訊,我們可以把資訊或者資料放在session中

常見場景:網站登入之後,下次不需要再登入,第二次訪問直接上去

3、Cookie

  1. 從請求中拿到cookie資訊
  2. 伺服器響應給客戶端cookie
//獲得cookie
Cookie[] cookies = req.getCookies();    // 這裡返回陣列,說明cookie可能存在多個

cookie.getName()	//獲得cookie中的key

cookie.getValue()	//獲得cookie中的value
    
cookie.setMaxAge(24*60*60);	//設定cookie的有效期

new Cookie("lastLoginTime", System.currentTimeMillis() + "");	//新建一個cookie

resp.addCookie(cookie);		//xiang'y

Cookie一般會儲存在本地的 使用者目錄下的/appdata

一個網站cookie是否存在上限?

  • 一個Cookie只能儲存一個資訊;
  • 一個web站點可以給瀏覽器傳送多個cookie,最多存放20個cookie;
  • Cookie大小有限制 4kb;
  • 300個cookie,瀏覽器的上限

4、Session

什麼是Session:

  • 伺服器會給每一個使用者(瀏覽器)建立一個Session物件
  • 一個Session獨佔一個瀏覽器,只要瀏覽器沒有關閉,這個Session就存在
  • 使用者登入之後,當前整個網站的頁面都可以都有記錄

Session和Cookie的區別

  • Cookie是把使用者的資料寫給使用者的瀏覽器,瀏覽器儲存;
  • Session把使用者的資料寫到使用者獨佔Session中,服務端儲存(儲存重要的資訊,減少伺服器資源的浪費);
  • Session物件由伺服器建立;

使用場景

  • 儲存一個使用者的登入資訊
  • 購物車資訊
  • 在整個網站中經常會使用的資料,將他儲存在Session中;

使用Session

// 得到Session
HttpSession session = req.getSession();

// 給Session中存東西
session.setAttribute("name",new Person("Cen",19));

// 獲取Session的ID
String sessionId = session.getId();

// 判斷Session是不是新建立的
session.isNew()

// 獲取Session中儲存的屬性
System.out.println(session.getAttribute("name"));

// 手動清理Session
session.removeAttribute("name");
session.invalidate();

會話自動過期:web.xml配置

<!--  設定Session預設的失效時間-->
  <session-config>
<!--    一分鐘後Session失效-->
    <session-timeout>1</session-timeout>
  </session-config>