Session特点:

1.Session保存在服务器端,为了获得更高的存取速度,一般把Session保存在内存当中;

2.每个用户都有一个独立的Session,为了避免大量用户访问服务器导致内存溢出,Session内的消息应当尽量精简;

3.Session在用户第一次访问服务器时创建,需要注意的是只有访问JSP,Servlet等程序时才会创建Session,单纯访问图片,HTML等静态资源时不会创建,

如果尚未创建Session,可使用request.getSession(true)强制创建;

4.Session上传后,只有用户继续访问,服务器就会更新Session的最后活跃时间,并维护该Session,对于用户,无论其访问时有没有读写Session,服务器都会认为Session活跃了一次;

5.为防止内存溢出,服务器会将长期不活跃的的Session从内存中删除,即设置超时时间,超时时间内用户若没有继续访问,该Session将失效

Session与Cookie

如何标明用户访问了浏览器,以使之前创建的Session继续存活呢?HTTP协议是无状态的,即无法标明,于是,这就得依靠Cookie了,

服务器想用户发送一个名为JSESSIONID的Cookie,其值为Session的id,用户访问浏览器时头信息内包含此Cookie,服务器依靠此Cookie判断是否为同一用户

此Cookie由服务器端生成,其maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口内不共享,关闭浏览器则失效,因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但由浏览器窗口内的链接、脚本等打开的新窗口会共享

父窗口的Cookie,因此共享一个Session。

如果客户端将Cookie禁用,或者不支持Cookie怎么办?

使用URL重写,原理是将Session中的id重写入url中,服务器解析重写的url获取id,这样即使客户端不支持Cookie,也能够通过url获取id

Session小解的更多相关文章

  1. session实现购物车

    为实现简单的购物功能(购物车添加.账户查看.购物车商品删除.实时的购物商品数量及价格的计算显示.购物车商品数量可手动输入等),用session实现了一简单的以php语言为基础.连接MySQL数据库的购 ...

  2. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  3. 懒加载session 无法打开 no session or session was closed 解决办法(完美解决)

           首先说明一下,hibernate的延迟加载特性(lazy).所谓的延迟加载就是当真正需要查询数据时才执行数据加载操作.因为hibernate当中支持实体对象,外键会与实体对象关联起来.如 ...

  4. 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  5. Nhibernate的Session管理

    参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需 ...

  6. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  7. zookeeper源码分析之六session机制

    zookeeper中session意味着一个物理连接,客户端连接服务器成功之后,会发送一个连接型请求,此时就会有session 产生. session由sessionTracker产生的,sessio ...

  8. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...

  9. 修改session垃圾回收几率

    <?php //修改session垃圾回收几率 ini_set('session.gc_probability','1'); ini_set('session.gc_divisor','2'); ...

随机推荐

  1. Organic Solar Cells - Generations of Solar Cells

    Sunlight --> Electricity A. E. Becquerel, 1839 . He stated that we can get energy from sunlight. ...

  2. 精通CSS+DIV基础总结(三)

    Div+CSS可是实现简单的网页设计,对于需要添加动作,更方便的交互,Javascript给我们提供了方便:数据的存储可以利用XML使其更加方便:而对于减少页面与服务器的交互,可以利用Ajax技术,与 ...

  3. 异常:failed for object com.sdu.crm.pojo.Customer@136a986 [java.lang.NullPointerException]

    异常: failed for object com.sdu.crm.pojo.Customer@136a986 [java.lang.NullPointerException] 大家好,如果大家看到了 ...

  4. mybatis里面的 #{}和${}

    1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111&qu ...

  5. OOAD(面向对象分析和设计)GRASP之创建者模式(Creator)又称生成器模式学习笔记

    说OOAD是一门玄学,一点都不为过.又或许是因为我之前一直没有很好的建立面向对象的思想,更有可能是因为练得不够多...总之,一直没能很好理解,哪怕把一本叫做<UML和模式应用>的书翻来覆去 ...

  6. VS 使用技巧

    1.按下alt键,可以做到竖向选择 2.

  7. C语言之算数运算符

    一 什么是算数运算符 算术运算符: +:  就是把两个数据相加,得到和 -:  就是把两个数据相减,得到差 *:  就是把两个数据相乘,得到积 /:  就是把两个数据相除,得到商 %:  就是把两个数 ...

  8. 【Coursera - machine learning】 Linear regression with one variable-quiz

    Question 1 Consider the problem of predicting how well a student does in her second year of college/ ...

  9. js面向对象小结(工厂模式,构造函数,原型方法,继承)

    最近过了一遍尼古拉斯泽卡斯的高级程序设计第三版(红皮书)第六章:面向对象程序设计,现在把总结出来的东西和大家分享一下. 主要内容如下: 1.工厂模式 2.构造函数模式 3.原型模式 4.继承 一.工厂 ...

  10. 转载 C#文件上传

     一.分析 本次博客,主要解决文件上传等一系列问题,将从两方面来论述,即1G以内文件和1G以上文件. 对于上传1G以内的文件,可以采用基本的三种上传方法:用Web控件FileUpload.html控件 ...