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

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

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

Cookie机制

Cookie的产生:当两个用户都用訪问了同一个购物站点,訪问结束关闭浏览器后,假设用http协议传输Web数据,client和server的连接就关闭了,此时不能保存会话状态。

也就是说假设用户A在该站点下了订单,下次A或B再訪问时server不能确定是谁下的订单了。

这显然行不通。所以就须要使用一种机制来记录究竟是谁下了订单。

此时,就用到了Cookie。

Cookie实际上是一小段的文本信息。

client请求server,假设server须要记录该用户状态,就使用Response向client浏览器发送一个Cookie。client浏览器会把Cookie保存起来。

当浏览器再请求该站点时,浏览器把请求的网址连同该Cookie一同提交给server。server检查该Cookie,以此来辨认用户状态。

server还能够依据须要改动Cookie的内容。

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

Cookie的特点

1、能记录用户登陆信息、经常使用浏览器信息和訪问次数。

这也是部分商家所看重的、导致cookie不安全的因素。由于我们能够在訪问server过程中截取cookie,如通过request.getCookie()方法。

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

3、Cookie操作。包含增删改查。

添加和查询cookie非常easy。用Request.getCookie()和Response.addCookie(Cookiecookie)方法就能够了。Cookie本身并不提供改动、删除操作。

改动的话,仅仅须要新建一个同名的Cookie,加入到response中覆盖原来的Cookie中。假设要删除某个Cookie,新建一个同名的Cookie后,将maxAge设置为0,并加入到response中覆盖原来的Cookie就可以。

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

Session机制

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

当client浏览器訪问server时,server会记录訪问信息。当用户再次訪问时,仅仅须要从session中查找该用户状态就能够了。

Session的特点

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

2、有效期。

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

解决方式:1、尽量精简Session信息;2、server定时删除长时间不活跃的Session,也就是设置Session有效期。

Session生成后,仅仅要用户訪问了。就会更新为最新时间。活跃时间以此为基础。

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

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

Session使用实例

Cookie与Session的异同点比較

同样点:

1、都能够保存client用户信息;

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

3、都存在有效期。

不同点:

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

2、Session安全性较好。

使用场景分析

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

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

小结:事实上他们的使用都非常easy,仅仅要弄清原理,就依照手冊查下使用方法就能够了,终于还是要归于实践。

Session与Cookie解析的更多相关文章

  1. 解析session与cookie

    Session和Cookie相关概念 Session和Cookie都是有服务器生成的. Session和Cookie都是键值对形式保存,主要用于存储特定的一些状态值. Session保存在服务器,Co ...

  2. Session与Cookie概念

    摘:一.Session机制session是一种服务器端的状态管理技术,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.当程序需要为某个客户端的请求创建一个session的时候,服务 ...

  3. [转]ASP.Net篇之Session与Cookie

    本文转自:http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html Session: Session是“会话”的意思,然而,因为h ...

  4. 转!!深入理解 Session 与 Cookie

    摘要 Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问题.在初入职场时恐怕很多程序员在面试的时候都被问到过这个问题.其实这个问题回答起来既简 ...

  5. Session和Cookie深度剖析

    Session和Cookie的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于采用服务器端保持状态的方案在客户端 ...

  6. Session,Cookie,jsessionid,Url重写

    在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码: < % cookie[]cookies ...

  7. session和cookie详解2

    http 之session和cookie http://www.cnblogs.com/ForEverKissing/archive/2008/05/23/1205503.html Session简介 ...

  8. Session和Cookie的关系

    Session和Cookie关系 两者构建了web的回话数据 Cookie作为客户端的回话,Session为服务器端的 共同点: 都是1对1的,(一个客户一个独立的回话) 都以键值对的方式存储数据 都 ...

  9. 【转】session和cookie详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

随机推荐

  1. SolidWorks的文件类型

    零件模板 *.prtdot装配体模板 *.asmdot工程图模板 *.drwdot颜色文件 *.sldclr曲线文件 *.sldcrv复制设定向导文件 *.sldreg零件文件:prt sldprtF ...

  2. CAD参数绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...

  3. 中南大学2019年ACM寒假集训前期训练题集(基础题)

    先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆 ...

  4. linux下nginx、php和mysql安装配置

    一.安装nginx 安装nginx yum install -y epel-release yum install nginx -y 查看nginx软件包包括了哪些文件 rpm -ql nginx 启 ...

  5. virtualBox+centos使用mount -t vboxsf挂载

    1.先确保virtualBox安装目录下有对应的文件VBoxGuestAdditions.iso 2.点击设备下的“安装增强功能”,之后再centos可视化界面一步一步点击即可 3.virtualBo ...

  6. DataBase安装及简单配置

    下载以及安装 打开mysql官网下载页面:http://dev.mysql.com/downloads/mysql/ 用管理员身份打开cmd命令行工具,cd到解压文件的bin目录 输入mysqld i ...

  7. 九度oj 题目1206:字符串连接

    题目1206:字符串连接 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:5117 解决:2373 题目描述: 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来 ...

  8. NYOJ-768移位密码,最简单的代替密码;

    移位密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 ->   Link   <- 还有1个半小时考信息安全导论,昨晚心血来潮在oj上看到这几个题,简直就是水啊 ...

  9. COJ 1163 乘法逆元的求解

    乘法逆元就是求一个 a/b = c(mod m)在已知a%m , b%m 的条件下 求c的解 #include <cstdio> #include <cstring> usin ...

  10. noip模拟赛 终末

    分析:举个例子就能发现:偶数位上的数都必须是0,奇数位上的数可以取0~k-1,这就是一个标准的数位dp了. 这编译器......数组越界了竟然不报错. #include <cstdio> ...