会话跟踪技术概述及Cookie基本使用

本文介绍了HTTP会话跟踪技术,主要用于在无状态的HTTP协议中维持用户会话状态。主要讨论了两种常见实现方式:Cookie(客户端会话技术)和Session(服务端会话跟踪)。通过示例代码详细阐述了Cookie的基本使用,包括创建、发送及从客户端获取和解析Cookie数据的过程。
摘要由CSDN通过智能技术生成

目录

一、会话跟踪技术概述

二、Cookie基本使用


一、会话跟踪技术概述

会话:用户打开浏览器,访问web浏览器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自同一浏览器,以便在同一会话的多次请求间共享数据。

HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享。

44c4ccb1829c4faa93448de8c4a048c5.png

实现方式:

1、客户端会话根据技术:Cookie

2、服务端会话跟踪技术:Session

二、Cookie基本使用

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

Cookie基本使用:发送Cookie

1、创建Cookie对象,设置数据

Cookie cookie = new Cookie("key","value");

2、发送Cookie到客户端:使用response对象

response.addCookie(cookie);

代码示例:

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

@WebServlet("/aServlet")
public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //发送cookie

        //1.创建cookie对象
        Cookie cookie = new Cookie("username","zs");

        //2.发送cookie,response
        response.addCookie(cookie);
    }

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

执行结果访问对象的Servlet时:

c652a35008d74120b82aba7c965344cd.png

 Cookie的位置及显示信息:

c0ba6374b0794cb1ae2583eec572dff4.png

 获取Cookie:

3、获取客户端携带的所有Cookie,使用request对象

Cookie[] cookies = request.getCookies();

4、遍历数组,获取每一个Cookie对象:for

5、使用Cookie对象方法获取数据

cookie.getName();

cookie.getValue();

代码示例:

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

@WebServlet("/bServlet")
public class BServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Cookie

        //1.获取Cookie数据
        Cookie[] cookies = request.getCookies();

        //2.遍历数组
        for (Cookie cookie : cookies) {
            //3.获取数据
            String name = cookie.getName();
            if ("username".equals(name)) {
                String value = cookie.getValue();
                // URL解码
                value = URLDecoder.decode(value,"UTF-8");
                System.out.println(name + ":" + value);

                break;
            }
        }
    }

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

执行结果:

先访问aServlet:

493da8c421e34f57b540dc9c6133ce88.png

再访问bServlet:

 d79cc4f5b6a0410bb36ea6822a3dc050.png

 控制台输出:

c876555efdeb4d2a8e073e5c88ced7ae.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值