在很久很久以前,刚有浏览器和网页的时候,web开发者发现了一个问题,我必须要在客户端这边保存一些东西才能实现某些功能,比如大家喜闻乐见的购物车、用户登录、自动登陆等。但是客户端只有一个浏览器,怎么在用户也就是客户端那边保存数据呢?于是大佬们一拍桌子,Cookie就诞生了!
我把Cookie理解为一个键-值形式存储再加上有效时间的一个容器,除此之外Cookie还有一个作用范围的概念(作用范围指的是域和路径,域的意思是根域名和端口,除非在设置cookie的时候特别指定域名),可以认为在同一个域里面的页面共享Cookie。Cookie的获取和设置命令都是写在 HTTP 请求或者响应头里的(也就是你要是已经开始发 HTTP 响应正文之后就不能对 Cookie 做写操作了)。
但是 Cookie 保存在浏览器本地就有个问题,这TM是明文的,容易被别有用心的软件看到。 而且不能随心所欲的更改和读取。
于是大佬们又一拍桌子就发明了Session,

Session 和 Cookie 一样也是以键值对的形式存取,只是保存的地方不一样,Cookie保存在用户端(也就是浏览器,或者是其他什么HttpClient里),但是Session的内容是保存在服务器上的。
这样就有个问题,服务器怎么知道哪个客户端对应哪个Session?

于是就在浏览器放一个叫做 SessionID 的东西用Cookie保存。

所以当你在JSP里打开了session之后,你会发现在浏览器的cookie里会多一个JSESSIONID=xxx的一个cookie项,
当然这是默认的键名,你需要的话可以改。
 
总结,Cookie和Session的用途和存储方式差不多,只是一个存储在客户端,一个存储在服务端,Session 既然存放在服务端,为了标识客户端,就在客户端的Cookie里放置一个SessionID,在使用上Session更灵活更安全。
欢迎补充与纠错。
 
本博客内容与代码均为作者Jarvis原创,如若转载请注明。

Session与Cookie间不得不说的一些事的更多相关文章

  1. 详解SESSION与COOKIE的区别

    在PHP面试中 经常碰到请阐述session与cookie的区别与联系,以及如何修改两者的有效时间. 大家都知道,session是存储在服务器端的,cookie是存储在客户端的,session依赖于c ...

  2. Session和Cookie深度剖析

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

  3. node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录

    关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比 ...

  4. Session,Cookie,jsessionid,Url重写

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

  5. session和cookie详解2

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

  6. 【转】session和cookie详解

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

  7. Session和Cookie总结

    一.Session和Cookie 1.Cookie 1.cookie创建于服务器,保存于浏览器,保存了特定网站操作记录和资料凭证的信息. 2.未设置cookie期限的时候,默认是关闭浏览器后cooki ...

  8. (转)浅谈Session与Cookie的区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

  9. session 和 cookie (转)

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

随机推荐

  1. Guava API学习之Multimap

    相信大家对Java中的Map类及其之类有大致的了解,Map类是以键值对的形式来存储元素(Key->Value),但是熟悉Map的人都知 道,Map中存储的Key是唯一的.什么意思呢?就是假如我们 ...

  2. dedecms _ 当前位置问题的代码

    {dede:field name='position' runphp='yes'} $tc=" > "; $tf=split($tc,@me); $tn=count($tf) ...

  3. PHP学习系列(1)——字符串处理函数(5)

    31.ord() 函数返回字符串第一个字符的 ASCII 值. 语法:ord(string) 例子 <?php echo ord("h"); echo ord("h ...

  4. mongodb spring

    可参考 http://blog.csdn.net/cuiran/article/details/8287204 我修改后的代码 http://pan.baidu.com/s/1mgJYbaC

  5. Java学习笔记--通过java.net.URLConnection发送HTTP请求

    http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...

  6. 二叉树的Morris遍历

    二叉树的遍历,除了上篇文章中的传统递归和使用的栈结构的非递归方式,还有如下这种Morris遍历方式,该算法的构思非常巧妙:利用前驱空闲的rightChild指针指向当前节点,形成一个环.时间复杂度和前 ...

  7. vmware workstation 10.0.1 install mac os mavericks

    由于项目当中有ios app开发,第一感觉就是mac开发环境会比较适合开发与调试(虽然linux.windows都有相应的oc开发环境). 由于我是用windows7搞.net开发的,所以其他系统接触 ...

  8. cf445B DZY Loves Chemistry

    B. DZY Loves Chemistry time limit per test 1 second memory limit per test 256 megabytes input standa ...

  9. libeXosip2(3-1) -- eXosip2 INVITE and Call Management

    eXosip2 INVITE and Call Management SIP messages and call control API Functions int  eXosip_call_set_ ...

  10. c++命名空间using

    #include<iostream> namespace run1 { ; } namespace run2 { ; void show() { std::cout << x ...