【JavaWeb】Cookie

Cookie 有什么用

思考问题 1-抛砖引玉

大家在访问某个网站的时候,是否能看到提示你上次登录网站的时间,而且要注意的是不同
用户上次登录的时间肯定是不一样的,这是怎么实现的?

image-20221218200759797

思考问题2-抛砖引玉

大家在访问某个购物网站的时候,是否能看到提示你曾经浏览过的商品,不同用户浏览过 的商品肯定不一样,这是怎么实现的?

解决之道—cookie 技术

Cookie(小甜饼)是客户端技术,服务器把每个用户的数据以 cookie 的形式写给用户各自的浏 览器。当用户使用浏览器再去访问服务器中的 web 资源时,就会带着各自的数据去。这样, web 资源处理的就是用户各自的数据了。【简单示意图】

image-20221218201836766

image-20221218201900683

image-20221218202141883

cookie 介绍

二说 cookie

  1. Cookie 是服务器在客户端保存用户的信息,比如登录名,浏览历史等, 就可以以 cookie 方式保存。
  2. Cookie 信息就像是小甜饼(cookie)一样,数据量并不大,服务器端在需要的时候可以从客户端浏览器读取,可以通过图来理解。

image-20221218202705919

image-20221218202754090

cookie可以用来做啥

  1. 保存上次登录时间等信息
  2. 保存用户名,密码, 在一定时间不用重新登录
  3. 网站的个性化,比如定制网站的服务,内容。

Cookie是保存在本地浏览器的!!!

cookie 基本使用

使用文档

https://docs.oracle.com/javaee/7/api/

image-20221218204243983

cookie常用方法

  1. Cookie 有点象一张表(K-V),分两列,一个是名字,一个是值,数据类型都是 String , 如图
    image-20221218204501185

  2. 如何创建一个 Cookie(在服务端创建的)

Cookie c = new Cookie(String name,String val); 
c.setMaxAge();//保存时间
  1. 如何将一个 Cookie 添加到客户端
response.addCookie(c);
  1. 如何读取 cookie(在服务器端读取到 cookie 信息)
request.getCookies();

cookie 底层实现机制-创建和读取 Cookie

服务器端创建Cookie

package com.hspedu.cookie;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @ClassName CreateCookie
 * @Description TODO
 * @Author zephyr
 * @Date 2022/12/18 22:37
 * @Version 1.0
 */

@WebServlet(name = "CreateCookie", value = "/createCookie")
public class CreateCookie extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        System.out.println("==========CreateCookie被调用==========");
        //1. 创建一个Cookie对象
        /**
         * 1) username 该cookie的名字,唯一的,可以理解成key
         * 2) zephyr 该cookie的值
         * 3) 可以创建多个cookie对象
         * 4) 这是这个cookie在服务器端,还没有到浏览器
         */
        Cookie cookie = new Cookie("username", "zephyr");

        response.setContentType("text/html;charset=utf-8");

        //2. 将cookie发送给浏览器,让浏览器将该cookie保存起来
        response.addCookie(cookie);
        PrintWriter writer = response.getWriter();
        writer.println("<h1>创建cookie成功!<h1>");
        writer.flush();
        writer.close();
    }

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

image-20221218224843369

image-20221218224847269

服务器端读取Cookie

package com.hspedu.cookie;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

/**
 * @ClassName ReadCookies
 * @Description 演示:读取从客户端发送来的cookie信息
 * @Author zephyr
 * @Date 2022/12/19 10:47
 * @Version 1.0
 */

@WebServlet(name = "ReadCookies", value = "/readCookies")
public class ReadCookies extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        System.out.println("==========CreateCookie被调用==========");

        //1. 通过Request对象读取所有Cookie信息
        Cookie[] cookies = request.getCookies();
        //2. 遍历Cookie
        if (cookies != null && cookies.length 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值