1、會話
無狀态會話 :使用者打開一個浏覽器,點選了很多超連結,通路多個web資源,關閉浏覽器,這個過程可以有狀态稱會話:一個同學來過教室,下次再來教室,我們會知道這個同學,曾經來過,稱之為有狀态會話
2、儲存會話的倆種技術
cookie
- 用戶端技術(響應、請求)
session
- 伺服器技術,利用這個技術,可以儲存使用者的會話資訊。
- 我們可以把資訊活着資料放在Session中
常見應用:網站登入之後,你下次不用再登入了,第二次通路直接就上去了
3、Cookie
- 從請求中拿到cookie資訊
- 伺服器響應給用戶端 cookie
Java web中 Cookie Session 基本初識1、會話2、儲存會話的倆種技術3、Cookie3、Session(重點)4、Session 倆種銷毀方式
3.cookie的一些細節問題(不同系統不同)
一般會儲存在本地的使用者目錄下 appdata
一個cookie隻能儲存一個資訊(每次儲存一個)
一個web站點可以給浏覽器發送多個cookie,最多存放20個cookie
Cookie大小限制4kb
300個cookie浏覽器上限
4.删除cookie
方式一:不設定有消息,關閉浏覽器,自動失效
方拾二:設定有效期時間為0
解碼、編碼
URLEncoder.encode("張三","utf-8");
URLDecoder.decode("張三","utf-8");
建立cookie代碼(含過期時間)
package com.ctra.cookie;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
/*
* 添加一個 cookie
* 并且添加一個有效期
* 在頁面輸出
* */
public class CookieDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
Cookie[] cookies = req.getCookies();
if (cookies.length>0){
for (Cookie cookie : cookies) {
if(cookie.getName().equals("currentTime")){
long time = Long.parseLong(cookie.getValue());
Date date = new Date(time);
out.write(String.valueOf(date));
}
}
}else{
out.write("您這是第一通路:");
}
Cookie cookie = new Cookie("currentTime", System.currentTimeMillis() + "");
cookie.setMaxAge(24*60*60);
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
如上代碼,在浏覽器中可以看到headers中Set-Cookie中的内容
3、Session(重點)
什麼是session:
- 伺服器會給每一個使用者(浏覽器)建立一個Session對象
- 一個Session獨占一個浏覽器,隻要浏覽器不關閉,這個Session就存在
- 登入後整個網站可以通路
Java web中 Cookie Session 基本初識1、會話2、儲存會話的倆種技術3、Cookie3、Session(重點)4、Session 倆種銷毀方式
Session預設開啟
session原理就是打開浏覽器就會在cookie中添加了一個JSESSIONID的一個鍵值對
Session的使用場景
- 儲存一個登入使用者的資訊
- 購物車資訊
- 在整個網站中經常會使用的資料,我們将它儲存在Session中
Session和cookie的差別
- Cookie是把使用者的資料寫給使用者的浏覽器,浏覽器儲存(可以儲存多個)
- Session是把使用者的資料寫到使用者獨占的Session中,伺服器端儲存(儲存重要的資訊,減少伺服器資源的浪費)
- Session對象由服務建立
會話自動過期:web.xml配置
<!-- session失效時間-->
<session-config>
<!-- session 失效 15秒-->
<session-timeout>15</session-timeout>
</session-config>