session和cookie理解

本文介绍了HTTP协议的无状态特性,详细讲解了Session和Cookie的工作原理,以及如何使用Session在服务器端存储和管理数据,包括登录验证和验证码处理。强调Session的有效性受浏览器会话影响。
摘要由CSDN通过智能技术生成

目录

1、理解无状态

2、Session和Cookie理论

3、使用session存储数据


前言,理解session与cookie对于我们做web测试、接口测试、性能测试都是非常有帮助的。

cookie是一些数据信息,存储在浏览器端。

session是存储于服务器端的特殊对象,服务器会为每一个浏览器(客户端)创建一个唯一的session。这个session是服务器端共享,每个浏览器(客户端)独享的。我们可以在session存储数据,实现数据共享。

1、理解无状态

HTTP协议其中一个特点是:无状态

无状态举例:假设浏览器发起一个登录请求,然后服务器做出响应,这个时候发起把一个商品加入到购物车的请求,但是服务器因为无法记住你之前已经登录成功的这个状态,它不给你把商品加入到购物车,它让你做登录操作。

2、Session和Cookie理论

Session用于记录用户的状态。Session指的是一段时间内,单个客户端与Web服务器的一连串相关的交互过程。

浏览器第一次发送请求给服务器,服务器知道是第一次访问,就会分配一个Set-Cookie的一个响应头,比如说里面包含了一个cookie,叫做session-id,同时也会把本地存储一个session文件在服务器端,是为了保持服务器的一个状态,当浏览器接收到服务器分配的响应之后,把cookie保存在本地,后续浏览器再次发送请求之后,就会把浏览器分配的cookie带上去,然后服务器这个时候收到了你客户端所发起请求的cookie,会跟本地的cookie进行比对,从而验证你这个cookie的身份到底对不对。

3、使用session存储数据

   session类似于一个Map,里面可以存放多个键值对,是以key-value进行存放的。key必须是一个字符串,value是一个对象。

通过setArrtibute(属性名,Object)方法存储数据

 if (type == null || type == 0) {
        //登录注册
        session.setAttribute(Constants.CHECK_CODE_KEY, code);
    } else {
        //获取邮箱
        session.setAttribute(Constants.CHECK_CODE_KEY_EMAIL, code);
    }

通过getArrtibute(属性名)获取数据

  if (!checkCode.equalsIgnoreCase((String) session.getAttribute(Constants.CHECK_CODE_KEY_EMAIL))) {
                throw new BusinessException("图片验证码不正确");
            }

通过removeArrtibute("属性名")从session中删除数据

 session.removeAttribute(Constants.CHECK_CODE_KEY_EMAIL);

注意:session是一次会话有效,浏览器改变,则session改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值