JavaWeb14(Cookie)

Cookie详解

cookie相当于服务端给客户端的一个令牌,当下次访问时,依照这个令牌,服务端就知道曾经来过
(比如很多登陆过的网站一定时间内不需要重复登陆)

编写代码

CookieDemo01

package com.hao.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 doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        //得到所有cookie
        Cookie[] cookies = req.getCookies();
        if(cookies == null){
    
    
            out.print("这是您第一次访问本站");
        }else{
    
    
            out.print("您上次进入本站的时间是:");
            //遍历所有cookie,找到想要的标识符为lastLoginTime的cookie
            for (int i = 0; i < cookies.length; i++) {
    
    
                Cookie cookie = cookies[i];
                if(cookie.getName().equals("lastLoginTime")){
    
    
                    Long l = new Long(cookie.getValue());
                    Date date = new Date(l);
                    //输出该cookie创建时间
                    out.print(date);
                }
            }
        }
        //添加一个cookie(每次访问都会添加一个cookie)
        Cookie cookie = new Cookie("lastLoginTime",System.currentTimeMillis()+"");
        resp.addCookie(cookie);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doPost(req, resp);
    }
}

编写映射

<servlet>
    <servlet-name>CookieDemo01</servlet-name>
    <servlet-class>com.hao.cookie.CookieDemo01</servlet-class>
</servlet>
    <servlet-mapping>
        <servlet-name>CookieDemo01</servlet-name>
        <url-pattern>/cookie1</url-pattern>
    </servlet-mapping>

测试访问

第一次访问

在这里插入图片描述

按F5刷新后

在这里插入图片描述

为什么cookie一开始不为空 :

默认存在2个cookie
在这里插入图片描述

小知识

  • 一个Cookie只能保存一个信息;
  • 一个Web站点可以给浏览器发送多个Cookie,最多存放20个Cookie;
  • Cookie有大小限制(4kb)
  • 浏览器上限为300个Cookie

如何删除cookie

  • 不设置有效期,关闭浏览器自动删除(cookie失效)
  • 设置有效时间为0(setMaxAge方法)

猜你喜欢

转载自blog.csdn.net/qq_51224492/article/details/119109716