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

来源:互联网 发布:周立功单片机官网 编辑:程序博客网 时间:2024/04/28 18:17

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端登录成功。
1 0
原创粉丝点击