Cookie和Session以及会话跟踪技术的理解

本文介绍了会话跟踪技术的基础概念,详细对比了客户端会话跟踪技术Cookie和服务端会话跟踪技术Session的工作原理及使用方法,包括它们的区别、应用场景及安全性考虑。

Cookie和Session以及会话跟踪技术的理解

一、会话跟踪是什么?

1.会话

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

2.会话跟踪

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

二、Cookie-客户端会话跟踪技术

1.概念

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

2.工作流程

浏览器在第一次发送请求到服务器时,在服务器中会创建一个Cookie对象,Cookie对象会以key—value格式保存共享的数据,服务器在响应数据的时候,会把Cookie对象响应给浏览器,浏览器接收到响应数据,会把Cookie对象中的数据存储在浏览器内存中,此时浏览器和服务端就建立了一次会话
在同一次会话中该浏览器再次向服务器中发送请求,浏览器会携带Cookie对象中的所有数据传到服务器,这样就完成了同一次会话多次请求间的数据共享

3.Cookie的基本使用

3.1 发送Cookie

``创建Cookie对象,并设置数据

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

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

response.addCookie(cookie);

3.2 获取Cookie

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

Cookie[] cookies = request.getCookies();

  • 遍历数组,获取每一个Cookie对象:for
  • 使用Cookie对象方法获取数据
cookie.getName();
cookie.getValue();

3.3Cookie的使用细节

3.3.1 Cookie的存活时间

默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
如何将Cookie持久化存储?
设置Cookie存活时间

 setMaxAge(int seconds)

参数值为:

1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除

2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁

3.零:删除对应Cookie

3.3.2 Cookie存储中文

Cookie不能直接存储中文,如果需要存储中文,就需要进行转码
1.在AServlet中对中文进行URL编码,采用URLEncoder.encode(),将编码后的值存入Cookie中

2.在BServlet中获取Cookie中的值,获取的值为URL编码后的值

3.将获取的值在进行URL解码,采用URLDecoder.decode(),就可以获取到对应的中文值

三. 服务端会话跟踪技术:Session

1.概念

Session:服务端会话跟踪技术:将数据保存到服务端。

  • Session是存储在服务端而Cookie是存储在客户端
  • 存储在客户端的数据容易被窃取和截获,存在很多不安全的因素
  • 存储在服务端的数据相比于客户端来说就更安全

2.工作流程

  • 在服务端的AServlet获取一个Session对象,把数据存入其中
  • 在服务端的BServlet获取到相同的Session对象,从中取出数据
  • 就可以实现一次会话中多次请求之间的数据共享了
  • 现在最大的问题是如何保证AServlet和BServlet使用的是同一个Session对象
  • Session是基于Cookie来实现的,第一次请求会创建一个session对象,给浏览器响应时就会把session的唯一标识id:10当做一个cookie,添加Set-Cookie:JESSIONID=10到响应头中,并响应给浏览器,第二次请求时,会把cookie中的数据按照cookie: JESSIONID=10的格式添加到请求头中并发送给服务器Tomcat,服务器会根据id值找到session对象,保证了多次请求用一个session对象,实现了数据共享

3.Session小结

  • session数据存储在服务端,服务器重启后,session数据会被保存
  • 浏览器被关闭启动后,重新建立的连接就已经是一个全新的会话,获取的session数据也是一个新的对象
  • session的数据要想共享,浏览器不能关闭,所以session数据不能长期保存数据
  • cookie是存储在客户端,是可以长期保存

四,Cookie和Session区别

  • 区别:
    • 存储位置:Cookie 是将数据存储在客户端,Session 将数据存储在服务端
    • 安全性:Cookie不安全,Session安全
    • 数据大小:Cookie最大3KB,Session无大小限制
    • 存储时间:Cookie可以通过setMaxAge()长期存储,Session默认30分钟
    • 服务器性能:Cookie不占服务器资源,Session占用服务器资源
  • 应用场景:
    • 购物车:使用Cookie来存储
    • 以登录用户的名称展示:使用Session来存储
    • 记住我功能:使用Cookie来存储
    • 验证码:使用session来存储
  • 结论
    • Cookie是用来保证用户在未登录情况下的身份识别
    • Session是用来保存用户登录后的数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值