Cookie(一)

147 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

Cookie(一)

写在前面👀

今天主要讲讲会话技术的概念和Cookie的基本使用

一、会话跟踪技术

会话:指从打开浏览器访问某个网站,到关闭浏览器的过程

会话跟踪技术:指在会话中,帮助服务器记录用户状态和数据的技术。

  • HTTP协议无状态的,即,对于事物处理没有记忆能力,每次请求和响应都是独立的。客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息
  • 会话跟踪技术解决了HTTP协议多次请求间不能共享数据的缺点
  • 会话跟踪技术分类
    • 客户端会话跟踪技术:Cookie
    • 服务端会话跟踪技术:Session

二、Cookie简介

1️⃣什么是Cookie

Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。

2️⃣Cookie分类

  1. 会话级Cookie(默认):Cookie 保存到浏览器的内存中,浏览器关闭则 Cookie 失效。
  2. 持久级Cookie:Cookie 以文本文件的形式保存到硬盘上。

3️⃣Cookie工作流程

  1. 浏览器发送请求给Servlet A,Servlet A会响应一个存有请求参数的Cookie对象给浏览器

  2. 浏览器接收到响应数据将cookie存入到浏览器内存中

  3. 当浏览器再次发送请求给Servlet BServlet B就可以使用Request对象获取到Cookie数据

三、Cookie的基本使用

对于Cookie的操作主要分两大类,本别是发送Cookie获取Cookie

1️⃣发送Cookie

//1.创建Cookie对象,并存入数据
Cookie cookie = new Cookie("key","value");
//2.使用response对象将Cookie到客户端
response.addCookie(cookie);

2️⃣获取Cookie

//1.使用request对象获取客户端携带的所有Cookie
Cookie[] cookies = request.getCookies();
//2.遍历数组,获取每一个Cookie对象
for (Cookie cookie : cookies){}
//3.使用Cookie对象方法获取数据
cookie.getName();
cookie.getValue();

3️⃣代码案例

保存用户注册信息

  1. webapp目录下添加一个html文件,名称为:register.html。添加一个表单类型标签,设置请求方式为POST,请求路径为/tomcat/c1
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/tomcat/c1" method="post">
            账号:<input type="text" name="username">
            <br>
            密码:<input type="password" name="password">
            <br>
            <input type="submit" value="注册">
        </form>
    </body>
</html>
  1. 创建一个HttpServlet的子类:CookieDemo1,Servlet映射路径:/c1
@WebServlet("/c1")
public class CookieDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.创建cookie对象
        Cookie c1 = new Cookie("username", "bighorn");
        Cookie c2 = new Cookie("password", "123456");
        // 2.设置cookie存活时间:一天
        c1.setMaxAge(60 * 60 * 24);
        c2.setMaxAge(60 * 60 * 24);
        // 3.向浏览器发送cookie
        response.addCookie(c1);
        response.addCookie(c2);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
  1. 启动tomcat服务器

  2. 在浏览器地址栏输入,敲回车

localhost:8080/tomcat/register.html
  1. 演示结果

image-20220501183329014

image-20220501183239415

感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗