Session与Cookie

1. 什么是Cookie

概念1 : Cookie是一种小型文本文件,通常由网站服务器在网站访问者的计算机或移动设备上存储。这个文本文件包含有关特定网站的信息,例如该网站的首选项、个人资料和购物车内容等。Cookie由服务器生成,然后发送到浏览器,浏览器将其存储在计算机或移动设备上。随后,当访问同一网站时,浏览器会将该Cookie发送回服务器,以帮助服务器跟踪访问者和提供更个性化的体验。Cookie有时会引发隐私问题,因为一些网站可能会使用它们来跟踪个人在线行为。但是,许多网站需要Cookie才能正常工作,例如在线购物网站需要Cookie来存储购物车信息。

概念2: 客户端会话技术,将数据保存到客户端

1.0 使用demo

  1. 创建Cookie对象,指定数据
    new Cookie(String name, String value)

向客户端发送 Cookie

Cookie c = new Cookie("name","value"); //创建Cookie
c.setMaxAge(60*60*24); //设置最大时效,此处设置的最大时效为一天
response.addCookie(c); //把Cookie放入到HTTP响应中
  1. 发送Cookie对象
    response.addCookie(Cookie cookie)
  2. 获取Cookie拿到数据
    Cookie[] request.getCookies()

从客户端读取 Cookie

String name ="name";
Cookie[]cookies = request.getCookies();
if(cookies != null){
   for(int i= 0;i<cookies.length;i++){
    Cookie cookie =cookies[i];
    if(name.equals(cookis.getName()))
    //something is here.
    //you can get the value
    cookie.getValue();
   }
 }

优点: 数据可以持久保存,不需要服务器资源,简单,基于文本的 Key-Value

缺点: 大小受到限制,用户可以禁用 Cookie 功能,由于保存在本地,有一定的安全风险。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

课程===>Cookie原理分析

实现原理: 基于响应头set-cookie和请求头cookie实现
cookie细节

  1. 一次可不可以发送多个cookie? ---->>> 可以
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2. cookie在浏览器中保存多长时间? a.默认情况下:当浏览器关闭后,cookie数据被销毁(保存在浏览器的内存中) b.持久化存储:setMaxAge(int seconds) 正数:将Cookie数据写到硬盘的文件中,持久化存储,还代表cookie存活时间。 负数:默认值存在浏览器的内存中,浏览器关了就没了。 零:删除cookie信息
3. cookie能不能存中文? 在Tomcat8之前,Cookie不能直接存储中文数据,在8之后支持中文数据
4. cookie获取范围多大?假设在一个服务器中部署了多个web项目,那么在这些web项目中,cookie能不能共享?–>默认不能共享; setPath(String path):设置cookie的获取范围。默认情况下设置当前的虚拟目录。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

1.0.1 Cookie的特点和作用

Cookie的特点和作用

  1. cookie存储数据再客户端浏览器。
  2. 浏览器对单个cookie的大小(4kb)有限制以及对同一个域名下的总cookie数量也有限制(20个以内)。

作用:

  1. cookie一般用于存储少量的不太敏感的数据。
  2. 在不登录的情况下,完成服务器对客户端的身份识别。

1.0.2 Cookie案例

Cookie案例

  1. 记录上一次的访问时间
    需求: 1.访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
    2.如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串。

分析: 1. 可以采用Cookie来完成
2. 在服务器中Servlet判断是否有一个名为lastTime的cookie
有:不是第一次访问
没有:是第一次访问

1.1 会话

会话:一次会话中包含多次请求和响应。
一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。

会话功能:在一次会话范围内的多次请求间,共享数据。
方式:

  1. 客户端会话技术:Cookie
  2. 服务器端会话技术:Session

在这里插入图片描述
在这里插入图片描述

1.2 Request 对象的主要方法有哪些

在这里插入图片描述

2. Session

1. 概念:服务器端会话技术,再一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,HttpSession。
2. 快速入门:

HttpSession对象:
          Object getAttribute(String name)
          void setAttribute(String name, Object value)
          void removeAttribute(String name)

Session快速入门

在这里插入图片描述
在这里插入图片描述

Session的范围也是一次会话(不设置生命时间)。

Session依赖cookie

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

3. Cookie 和 Session 的区别

Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 一般用来保存用户信息 比如 :
①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;
②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);
③ 登录一次网站后访问网站其他页面不需要重新登录。

Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

Cookie 存储在客户端中,而 Session 存储在服务器上,相对来说 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

4. 什么是Token

Token(令牌)是用于身份验证和权限控制的一种安全凭证,通常由服务器生成并发送给客户端。Token是一串加密字符串,包含有关用户身份验证和权限控制的信息

在Web应用程序和API中,通常使用Token来授权用户访问特定的资源或执行特定的操作,而无需在每次请求时重新进行身份验证。对于某些Web应用程序,Token也可以用作单点登录(SSO)解决方案,在这种情况下,Token可以跨多个应用程序使用以验证和授权用户。

常用的Token有两种类型:

1.基于Session的Token - 服务器存储用户信息并在响应中返回一个Session ID,客户端在后续请求中将这个Session ID发送回服务器以进行身份验证。

2.基于JSON Web Token(JWT)的Token - 在Token中包含有关用户身份验证和授权的信息,例如用户ID和访问权限。通常,JWT Token包含一个签名,以确保其完整性和安全性。

附录

1.黑马
2.Session与Cookie
3.详说Session与Cookie
4.cookie与session的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

boy快快长大

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

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

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

打赏作者

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

抵扣说明:

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

余额充值