一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet )调用HttpServletRequest.getSession(true)这样的语句时才会被创建。
*************************************************************************************

我一开始还不信,做个试验我信了。

一开始不信是因为,用 FireFox 测试清空了Cookie ,只要一跑一个jsp ,马上会看到生成了一个名字是 JSESSIONID 的Cookie ,注意这个是  Session Cookie (会话Cookie),不是 Persistent Cookie (持久Cookie),这个《Cookie和Session专题 》一文中讲的很明白,会话 Cookie 是为实现 session 机制而采用的在 Client 端与 Server 端之间保持状态的解决方案之一,在默认情况下是保存在 Client 端内存中的。注意:会话 Cookie 的“会话”这里不是指 Server 端的 Session ,而是指的是浏览器,所以会话 Cookie 的生命周期不是与 Server 端的 Session 那个会话相同,而是与浏览器相同,就是说只要开着浏览器会话 Cookie 就存在,关闭浏览器它就过期了。但是会话 Cookie 的值是与 Server 端的 SessionId 对应相同的。就是说会话Cookie随着Server端Session的创建而创建,但并不随着Session的过期而过期,而是随着Client端的浏览器关闭而销毁。 这说明只要会话Cookie 出现了,Server 端的 Session 就已经创建了。

我一开始的错误想法是:我的 jsp 里没有 HttpServletRequest.getSession(true) 的代码阿,但是 JSESSIONID 的Cookie 出现了就说明 Server 端 Session 创建了,这与《Cookie和Session专题 》上面讲的不符啊,不过马上想通了,jsp 属于动态页,本质就是一个 Servlet ,编译后的 jsp 是要到 Server 端进行交互的(即便 jsp 里没写一句交互的代码),因为 jsp 里有内置对象,内置对象就是和 Server 交互的产物,所以如果你的首页是个 jsp 页的话,即便没有HttpServletRequest.getSession(true),Session 也会创建。

如果首页是*.html 就不同了,再将 FireFox 的 Cookie 都清除了,将首页设置为 index.html, 回车,查看,果然这次没有JSESSIONID 的 Cookie 生成,这说明Server的Session也没有创建,让 index.html 提交到一个Servlet, 确实可以证明没有 HttpServletRequest.getSession(true) ,Sesion是不会创建的, 即便Servlet又转发(或者重定向)到第二个页,只要第二个页依然不是jsp页,Session就依然不会创建,FireFox 当然也没有名字为 JSESSIONID 的 Cookie 生成。

   另外对jsp页面为什么会自动生成session,是因为jsp在默认的情况下session的属性设置的为true,如果设置为

,但是不显示的使用HttpServletRequest.getSession(true)的话session就不会创建了。

转载于:https://www.cnblogs.com/blackInHefei/archive/2012/05/03/2480800.html

cookie和session的理解相关推荐

  1. [html] 说说你对cookie和session的理解

    [html] 说说你对cookie和session的理解 cookie: 可以通过客户端, 服务端设置, 容量小, 可以通过设置domain来实现同步登录, 除了name, value, 它还有多个选 ...

  2. 对cookie与session的理解

    cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户. cookie的出现就是为了解决这个问题, 第一次登录 ...

  3. Java Web之Cookie和Session的理解

    日常现象 登录了某个网站,过一会儿再登录,诶,不用输入密码了,直接是登录状态了,好神奇~~~ 在某网站看了一部手机,接下来浏览其他网站,旁边的广告全是手机和类似信息,好恐怖~~~ 浏览某网站时,提示我 ...

  4. postman怎么传session_Day 47: 不搞懂Cookie和session誓不罢休

    Hello大家好!我是Cathy海希,今天是我学习编程的第47天. 欢迎同时关注我的Youtube&B站?Cathy海希TV 今天后知后觉地发现方方老师有在知乎上提及跟我相关的内容,简直太荣幸 ...

  5. Java Web(三) 会话机制,Cookie和Session详解

    很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因可能是没能好好理解这两种会话机制,所以会一直遗忘,一直重新回过头来学习它,今天好好把他总 ...

  6. 快速理解Token,Cookie,Session

    在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...

  7. 深入理解cookie和session

    cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结.(转发自https://www.cnblogs.com/roy-blog/p/82 ...

  8. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息 ...

  9. 【转】彻底理解cookie,session,token

    转自:https://zhuanlan.zhihu.com/p/63061864 彻底理解cookie,session,token 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是 ...

最新文章

  1. 《关系营销2.0——社交网络时代的营销之道》一从单向沟通转向多方沟通
  2. 展望2018:WebRTC和下一代编解码器
  3. sqlite换成mysql_从SQLITE的数据转到MYSQL
  4. Redis消息队列发展历程
  5. 「1024 程序员节」各大公司和程序员们都是怎么过的?你都做了哪些计划或安排?
  6. myeclipse自带tomcat
  7. 谷歌 analytics.js 简要分析
  8. Java中字符串的全部知识_java基础教程之字符串的介绍,比较重要的一个知识点「中」...
  9. tomcat优化配置
  10. opencv实现阈值分割
  11. GB28181协议错误码返回码整理
  12. 一、Java入门基础
  13. 数仓(一)简介数仓,OLTP和OLAP
  14. 应用宝ysdk微信二维码扫码登录没有回调问题
  15. Python3 正则表达式
  16. SPI MOSI和MISO 相位不同
  17. 南大金陵学院 计算机,以赛促学,南大金陵学子在全国大学生计算机设计大赛摘得一等奖1项和二等奖4项...
  18. 打开阿尔卡特511大猫路由功能
  19. 增强线下体验 加强线上渠道 便利蜂引领行业破局
  20. 飞浆AIstudio 李宏毅线性代数作业答案

热门文章

  1. 网站在改版时如何降低对排名的影响呢?
  2. 周期串java_求最小周期串
  3. feign session 调用_springboot使用feign调用session传递失效解决方案
  4. RxPermission原理解析
  5. android java.nio.charset.MalformedInputException: Input length = 1
  6. ​Python 3 新特性:类型注解——类似注释吧,反正解释器又不做校验
  7. pandas dataframe 过滤——apply最灵活!!!
  8. 神经网络为什么要归一化
  9. Finding Similar Items 文本相似度计算的算法——机器学习、词向量空间cosine、NLTK、diff、Levenshtein距离...
  10. xampp的Apache配置