狂神說Java Web學習筆記_Cookie

growingbambi發表於2024-04-11

會話

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

有狀態會話

一個同學來過教室,大家看到了,下次再來教室的時候,我們會知道這個同學曾經來過,這個被稱為有狀態會話。

一個網站如何證明你訪問過

服務端給客戶端一個信件,客戶端下次訪問服務端的時候帶上信件—cookie

服務端登記你來過,下次你再來的時候服務端來匹配你—session

儲存會話的兩種技術

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

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

相關文章