JavaWeb Cookie 和 Session

        user(客户端) 请求 tomcat(服务器), 属于HTTP请求。http请求是无状态的,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;所以当用户从客户端请求一次登录后,登录成功,再次进行请求时,因为tomcat不能识别这两次会话都是来自同一个浏览器,即服务端不知道客户端的历史请求记录;就会再次弹出登录对话框。

引入cookie和session解决客户端和服务端会话同步问题。

        星巴克开始优惠活动,每消费10杯咖啡,会免费赠送1杯。考虑到一个人一次性消费10杯咖啡几乎不可能,所以需要采取某种方式来记录顾客的消费数量。

解决方案

1)店员很厉害,每个顾客的消费记录都记得一清二楚;

2)分给顾客一张卡片,每消费一次记录一次;

3)发给顾客一张卡片,上面有卡号,顾客每消费一次,由店员在操作机上记录一次。

分析:方案一的可执行性几乎为0。方案二和方案三我们都见过。 而方案二和三正是对应的客户端记录和服务端记录。与之相对应的正是cookie和session。
 

1、Cookie

        一个HTTP cookie的(网络Cookie,浏览器cookie)是一小片数据的一个服务器发送到用户的网络浏览器。浏览器可以存储它并将其与下一个请求一起发送回同一服务器。通常,它用于判断两个请求是否来自同一个浏览器 - 例如,保持用户登录。它记住无状态 HTTP协议的有状态信息。

缺点:

        如果浏览器使用的是cookie,那么所有的数据都保存在浏览器端,

        cookie可以被用户禁止

        cookie不安全(对于敏感数据,需要加密)

        cookie只能保存少量的数据(大约是4k),cookie的数量也有限制(大约是几百个),不同浏览器设置不一样,反正都不多

        cookie只能保存字符串

2、Session

        客户端请求服务端,服务端(Tomcat)会为这次请求开辟一块内存空间,这个对象便是Session对象, 存储结构为ConcurrentHashMap。

        session的目的:弥补HTTP无状态特性,服务器可以利用session存储客户端在同一个会话期间的一些操作记录。        

缺点:

        一般是寄生在Cookie下的,当Cookie被禁止,Session也被禁止

        可以通过url重写来摆脱cookie

        当用户访问量很大时,对服务器压力大

        我们现在知道session是将用户信息储存在服务器上面,如果访问服务器的用户越来越多,那么服务器上面的session也越来越多, session会对服务器造成压力,影响服务器的负载.如果Session内容过于复杂,当大量客户访问服务器时还可能会导致内存溢出。

        用户信息丢失, 或者说用户访问的不是这台服务器的情况下,就会出现数据库丢失

3、总结

        cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

        session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

        单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。

        可以将登陆信息等重要信息存放为session。

参考文献:什么是session?什么是cookie?session和cookie有什么区别?_IT修真院的博客-CSDN博客_cookie和session的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值