session什么时候被创建
一个常见的错误是以为 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 生成。
session什么时候被创建的更多相关文章
- session在什么时候创建,以及session一致性问题
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/wowwilliam0/article/d ...
- session是什么时候创建的
总结:session不是一打开网站就会立刻建立.它的建立需要基于下面两个条件中的任意一个: 1:在servlet中手动调用 HttpSession session = request.getSessi ...
- RealSense开发-Session和SenseManager的几种创建方法
从Intel RealSense 的SDK文档对其架构(如图1所示)的始描述可知,Session是SDK应用的主控模块,必须在所有模块操作之前创建,并且在所有模块注销后最后注销.SenseManage ...
- Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程
待解决的问题 Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程 解决办法 为spring session添加spr ...
- 使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(二)
[MyEclipse最新版下载] 二.创建一个Session EJB – Part 1 MyEclipse中的EJB 2.x开发使用了EJB向导和集成XDoclet支持的组合. 每个EJB由三个基本部 ...
- 使用session页面控制登录入口及购物车效果的实现
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只 ...
- CAS Client集群环境的Session问题及解决方案
[原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登录的基本原理.这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法.并结合实际工作中碰到的问题,探讨 ...
- Hibernate 系列 05 - Session 类
引导目录: Hibernate 系列教程 目录 前言: Session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session息息相关. 就如同在编写JDBC时需要关 ...
- Webform(七)——内置对象(Session、Application)和Repeater的Command操作
内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. 一.内置对象 (一)Session 跟Cookies一样用来存储用户数据 1.Session.Cookies对比 ...
随机推荐
- 【转】Android 4.3源码下载及问题解决
[html] view plaincopy 1 2 3 4 5 6 7 8 9 10 11 jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ cat /et ...
- jquery之ajax中国乱码的解决方案
$.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: ...
- 《web全栈工程师的自我修养》阅读笔记
在买之前以为这本书是教你怎么去做一个web全栈工程师,以及介绍需要掌握的哪些技术的书,然而看的过程中才发现,是一本方法论的书.读起来的感觉有点像红衣教主的<我的互联网方法论>,以一些自己的 ...
- Android供TextView添加多个点击文字
我们使用社会性软件的过程中会或多或少像别人的帖子点,图. : 能够看到用户页面显示出来的仅仅是点了赞的用户的名称,点击这些名称能够进入到该用户的主页.我们就来实现相似的效果.直接上代码吧. @Over ...
- 3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
主题链接:http://pat.zju.edu.cn/contests/ds/3-08 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操 ...
- Windows 怎么知道我已连线到网际网络? 原来当中大有文章!
原文 Windows 怎么知道我已连线到网际网络? 原来当中大有文章! 标题这个问题好像很简单, 但原来深入研究起来还真的不是”因为我能看到网页嘛”这样简单的答案. 研究这个课题是由于公司内部的防火墙 ...
- http报错之return error code:401 unauthorized
http报错之return error code:401 unauthorized 依据HTTP返回码所表示的意思应该是未授权,没有输入账号和password,因此解决方法就直接在HTTP包里面 ...
- C#中实现并发
C#中实现并发的几种方法的性能测试 0x00 起因 去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块.当时的做法很简单,服务端等待链接,有用户接入后开 ...
- Android AIDL使用特定的解释
1.什么是aidl:aidl这是 Android Interface definition language缩写,认清,这是android进程间通信接口的叙事语言描述.通过它我们可以定义进程间通信接口 ...
- 利用纯CSS3实现超立体的3D图片侧翻倾斜效果
原文:利用纯CSS3实现超立体的3D图片侧翻倾斜效果 上午的时候我在jQuery论坛上看到网友分享的一款CSS3 3D图片侧翻倾斜特效,觉得效果非常棒,其实话说回来,这玩意儿的实现真的非常简单,主要是 ...