狂神说Java Web学习笔记_Cookie

会话

用户打开一个浏览器,点击了很多链接,访问了很多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

posted @ 2024-04-11 22:42  growingbambi  阅读(15)  评论(0编辑  收藏  举报