Session与Cookie的区别与联系





 sessioncookie
存放数据位置存放在服务器端,存放数据,session是由服务器维持的一个服务器存储空间。cookies属于session对象的一种,但不占用服务器资源,存在客户端内存或一个cookie的文本文件中。
进程浏览器发送请求,服务器自动生成一个session和session id来标识这个session,将响应发送到浏览器浏览器请求时,将用户一起发给服务器,变量由一定的特殊标记,服务器解释为cookie变量,不关闭浏览器cookie变量就一直有效
存储使用

1.服务器在一定时间内(默认30min)保存这个session。过了时间限制就销毁。销毁前,程序员可以将用户的一些数据以key,value形式暂时存放在这个sess中。——减轻服务器压力。

2.也有使用数据库将这个session序列化之后保存起来的,没了时间限制,但是数据库容量会不足,服务器压力大

session客户端实现形式:

1.cookie保存,设置cookie将session id发送到浏览器。不设置过期时间时cookie将不存在在硬盘上,浏览器关闭,cookie消失,session id就丢了。

设置时间,cookie会保存在客户端硬盘中,浏览器关闭也不影响,下次访问网站时,同样会发送到服务器上。


2.使用URL附加信息的方式,也就是像我们经常看到JSP网站会有aaa.jsp?JSESSIONID=*一样的。这种方式和第一种方式里面不设置Cookie过期时间是一样的。


3.页面表单增加隐藏域,和第二章一样。前者get发送数据,后者post发送数据。后者较为麻烦。

 数据在服务器上,不能伪造信息浏览器使用cookie,数据在浏览器端,别人会冒充。不安全
 

用户链接服务器时,会由服务器生成一个唯一的session id作为标识符来存取服务器端的session存储空间。此session id是用cookie保存在客户端的,用户提交页面时,会将这个session id提交到服务器端来存取session数据。

如果客户端禁用cookie,那么session也会失效。

禁用后也可以用重写URL的方式来传递session的值,cookie禁用,服务器可以自动通过重写url方式来保存session的值,此过程对程序员透明。

可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。

 
使用原则 任何重要数据,最好通过加密形式来保存数据(最简单的可以用URLEncode,当然也可以用完善的可逆加密方式,遗憾的是,最好不要用md5来加密)。 
是否保存登陆信息,需有用户自行选择。 
长于10K的数据,不要用到Cookies。 
也不要用Cookies来玩点让客户惊喜的小游戏。
典型应用 

1.判断用户是否登录过网站,以便下次登录可以直接登录。如果删除,每次登录时需要重新填写登录的相关信息。

2.’购物车’中类的处理和设计,将用户浏览的不同商品都写入cookie,付款时从cookie中提取这些信息。(需要考虑安全和性能问题)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值