深入分析java web技术内幕----读书笔记(六)

session和cookie都是用来保持用户与后端服务器的交互状态。

cookie大小大小受限,并且占带宽。

session不能在多个服务器间共享。

 

cookie是保存在客户端的一个数据结构

session是保存在服务端的一个数据结构。

 

服务端:在tomcat中使用addcookie方法添加cookie,真正则是在response中完成创建。

接受客户端cookie:通过request.getcookies()来获得。

 

request和response 

Request 和 Response 对象起到了服务器与客户机之间的信息传递作用。Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。

 

session对cookie的改进:

cookie在每次访问时需要传回,增加传输量,可以设置id作为标志进行传递,即session id是通过cookie传递的,属性值为jsessionid。

 

有了seesionid,服务端可以创建httpsession对象。第一次触发通过request.getsession()。以后都通过session id来找到session。

 

session没过期时,即使容器关闭或重启也会被持久化。

同个浏览器打开同一个应用多次会使用同一个session,不同浏览器打开一个应用会用不同的session。

 

 

 

cookie问题:客户端存储限制、cookie管理混乱,cookie不能跨域名,安全问题。

可以用分布式session框架解决。

实现方式:

 

1统一使用订阅服务器管理cookie,应用服务器需要哪个cookie由订阅服务器来推送。一般用zookeeper实现

集群的配置管理。

 

 

2session将保存到分布式缓存中,让服务器可以共享访问,因为session不可能同步到每个服务器上。

 

分布式缓存可以用memcache实现。

 

3cookie太大的办法是压缩cookie,将keyvalue转化为文本。

 

4多终端session统一:手机和电脑的cookie和session需要统一,即包括数据结构,存储。防止二次登陆等问题。所以需要在服务端统一session,所有终端拿到的session id都一样。

 

5:热门。电脑打开网页扫码登录

服务端不停检测标识,手机登录后产生标识使pc端登录成功。

微信公众号

个人公众号:程序员黄小斜

微信公众号【程序员黄小斜】新生代青年聚集地,程序员成长充电站。作者黄小斜,职业是阿里程序员,身份是斜杠青年,希望和更多的程序员交朋友,一起进步和成长!专注于分享技术、面试、职场等成长干货,这一次,我们一起出发。

关注公众号后回复“2019”领取我这两年整理的学习资料,涵盖自学编程、求职面试、算法刷题、Java技术学习、计算机基础和考研等8000G资料合集。

技术公众号:Java技术江湖

微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,专注于 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!

关注公众号后回复“PDF”即可领取200+页的《Java工程师面试指南》强烈推荐,几乎涵盖所有Java工程师必知必会的知识点。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Java技术江湖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值