码迷,mamicode.com
首页 > 其他好文 > 详细

Session与Cookie解析

时间:2015-08-02 13:49:35      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:项目技术总结

            Session和Cookie这两个对象也接触了比较长的时间了,今天就来总结一下。

     首先,他们都是会话跟踪中常用的技术。Cookie在客户端记录信息来确定用户身份,Session在服务端记录信息来确定用户。

     这篇文章将系统讲解Cookie与Session的机制、使用场景和实例。


     Cookie机制

     Cookie的产生:当两个用户都用访问了同一个购物网站,访问结束关闭浏览器后,如果用http协议传输Web数据,客户端和服务器的连接就关闭了,此时不能保存会话状态。也就是说如果用户A在该网站下了订单,下次A或B再访问时服务器不能确定是谁下的订单了。

     这显然行不通,所以就需要使用一种机制来记录到底是谁下了订单。此时,就用到了Cookie。

     技术分享Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用Response向客户端浏览器发送一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

     结合上面的例子,就是服务器给每个登陆用户发一张验证卡,卡号是唯一的、随机生成的,到时候用户持卡去服务端验证,通过后就可以读取个人信息了。

     Cookie的特点

     1、能记录用户登陆信息、常用浏览器信息和访问次数。这也是部分商家所看重的、导致cookie不安全的因素。因为我们可以在访问服务器过程中截取cookie,如通过request.getCookie()方法。

     2、能保存Unicode、ASCII字符和二进制内容。也就意味着可以保存中文或二进制图片,保存中文或图片时必须对其进行编码。当然,由于每次访问服务器都要传一次cookie,所以不提倡cookie中带有大量内容,会影响效率。

     3、Cookie操作,包括增删改查。

     增加和查询cookie很简单,用Request.getCookie()和Response.addCookie(Cookiecookie)方法就可以了。Cookie本身并不提供修改、删除操作。修改的话,只需要新建一个同名的Cookie,添加到response中覆盖原来的Cookie中。如果要删除某个Cookie,新建一个同名的Cookie后,将maxAge设置为0,并添加到response中覆盖原来的Cookie即可。

     点击链接进入: Cookie使用实例。    


     Session机制

     Session也是保存客户端用户信息的一种方式,只是它保存在服务端。

     当客户端浏览器访问服务器时,服务器会记录访问信息,当用户再次访问时,只需要从session中查找该用户状态就可以了。

     Session的特点    

     1、创建和读写。Session在第一次访问服务器,且访问资源为非静态(如JSP,Servlet)时会被创建,每个用户对应一个。Java中,都是通过K-V键值对形式存在,通过GetAttribute()和SetAttribute()方法来读写。

     2、有效期。

     为了保证快速读取,Session被放在了内存中,然而当数量随着用户访问量的增长而快速增长时,就可能发生Session过多而内存溢出。

     解决方案:1、尽量精简Session信息;2、服务器定时删除长时间不活跃的Session,也就是设置Session有效期。Session生成后,只要用户访问了,就会更新为最新时间,活跃时间以此为基础。

     3、依赖SessionID。根据Http无状态协议服务器是无法判断新的访问来自哪个用户,因此需要在客户端发送的Cookie中存入一个SessionID,用以辨别用户身份和获取资源。SessionID由服务器端创建而保存在浏览器端。

     有的浏览器考虑安全性等因素,并不支持cookie,因此可以使用URL地址重写来保存SessionID,发送到服务器。    

     Session使用实例


     Cookie与Session的异同点比较

     相同点:

     1、都可以保存客户端用户信息;

     2、都不应保存内容过多;

     3、都存在有效期。

     不同点:

     1、保存地址不同,cookie在客户端,Session在服务端;

     2、Session安全性较好。

   

     使用场景分析

     1、考虑安全性时,尽量用Session;考虑服务器性能时,尽量用Cookie;

     2、二者结合,可以我们把重要的,如登陆信息放入Session,把其他信息放入Cookie。

     

     小结:其实他们的使用都很简单,只要弄清原理,就按照手册查下用法就可以了,最终还是要归于实践。

    



     

版权声明:本文为博主原创文章,未经博主允许不得转载。

Session与Cookie解析

标签:项目技术总结

原文地址:http://blog.csdn.net/u010191243/article/details/47194387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!