會話
使用者開啟一個瀏覽器,點選了很多連結,訪問了很多web資源,關閉瀏覽器之後,這個過程可以稱之為一次會話。
有狀態會話
一個同學來過教室,大家看到了,下次再來教室的時候,我們會知道這個同學曾經來過,這個被稱為有狀態會話。
一個網站如何證明你訪問過?
服務端給客戶端一個信件,客戶端下次訪問服務端的時候帶上信件—cookie
服務端登記你來過,下次你再來的時候服務端來匹配你—session
儲存會話的兩種技術
Cookie
客戶端技術(響應,請求)
Session
服務端技術,利用這個技術,可以儲存使用者的會話資訊。我們可以把資訊或者資料放在session中。
常見應用場景
你登入網站之後,關閉瀏覽器之後,下次再訪問網站的時候不需要再重新填寫資訊登入了,直接就登入進去了。
Cookie
- 從請求中拿到Cookie資訊
- 伺服器響應給客戶端Cookie
儲存上一次訪問瀏覽器時間
package com.dawn.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;
public class CookieDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
Cookie[] cookies = req.getCookies();
if (cookies != null) {
boolean hasLastLoginTime = false;
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("lastLoginTime")) {
long l = Long.parseLong(cookies[i].getValue());
Date date = new Date(l);
String lastLoginTime = date.toLocaleString();
out.print("上一次的登入時間為:" + lastLoginTime);
hasLastLoginTime = true;
break;
}
}
if (!hasLastLoginTime) {
out.print("這是你第一次登入~");
}
} else {
out.print("這是你第一次登入~");
}
resp.addCookie(new Cookie("lastLoginTime", System.currentTimeMillis() + ""));
}
}
<servlet>
<servlet-name>cookieDemo01</servlet-name>
<servlet-class>com.dawn.cookie.CookieDemo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cookieDemo01</servlet-name>
<url-pattern>/cookieDemo01</url-pattern>
</servlet-mapping>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
uploading-image-57331.png