首先明确几个概念

(1)JSessionID:通过tomcat运行的Java项目,为新用户生成的随机字符串.(应该是tomcat设置的,我没试过别的服务器,如有错误请指正)

(2)Session请求(自创概念,方便下文)-指Cookie中不含JSessionId的请求.

一.session的结构

session的结构类似于hashmap

Session请求访问网站时,服务器自动生成一个sessionid,并保存在名为JSessionId的cookie中,发送回客户端.

这个sessionid就相当于session的一个key

二.session的生命周期

参考:http://blog.csdn.net/u012635819/article/details/50678602

1.session何时创建

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

如果你写个简单的demo,根本没用到getSession(),那根本就不会创建session,即使cookie中有JSessionID,直到访问了getSession(),通过客户端的JSessionID创建Session.

所以在未创建session时,如果Session请求访问的页面中有session.getSession(false).getAttribute,直接报NULL错误.

用Spring的WebUtil或者在Filter中用getSession()手动创建一个.

2.session何时结束

A.程序调用HttpSession.invalidate() 
B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间 
C.服务器进程被停止 
再次注意关闭浏览器只会使存储在客户端浏览器内存中的cookie的JsessionId失效,不会使服务器端的session对象失效。

但是此时服务器仍保留失效的JsessionId,直到过期前都是无用信息了.

当然也可以监测浏览器关闭事件发送请求清除session,不过不确定在那毫秒之间能否发送成功,有资料,没试过.

Session重点整理的更多相关文章

  1. //Build/ 2014 开发者大会Azure重点整理

     寓教于乐,轻松掌握 Windows Apps和 Cloud //Build/ 2014开发者大会第二天重点整理 (上) //Build/ 2014开发者大会第二天的主题演讲主要包含两部分:Mic ...

  2. Week-1 linux命令行重点整理

    ①仅对当前用户: ~/.bashrc ②对所有用户有效: /etc/bashrc screen命令:创建新screen会话screen –S [SESSION]加入screen会话screen –x ...

  3. Web全段重点整理

    1.  HTML+CSS 1.1. HTML+CssDay01 1.1.1. 常用普通标签 常用标签如下 div span a p ul+li h1-h6 img 代码示例: <img src= ...

  4. JS重点整理之JS原型链彻底搞清楚

    对象 要清楚原型链,首先要弄清楚对象: 普通对象 最普通的对象:有__proto__属性(指向其原型链),没有prototype属性. 原型对象(person.prototype 原型对象还有cons ...

  5. 微软 Build 2014开发者大会干货整理-1

    微软 Build 2014开发者大会第二天的主题演讲主要包含两部分:Microsoft Azure的发展状况,以及 .NET和生态系统的发展介绍.第二天的重点整理也由此分为上下两部分.您可以在Chan ...

  6. 亲身经历,Java面试题整理

    博主在2015年暑期参加过一些Java开发工程师实习的面试和笔试,在此将重点整理出来,以供大家学习. 资料1: 一.单继承 1.1Java类是否支持多重继承? 答:继承的基本原则是: 子类继承父类的所 ...

  7. session及cookie详解(七)

    前言 文章说明 在每整理一个技术点的时候,都要清楚,为什么去记录它.是为了工作上项目的需要?还是为了搭建技术基石,为学习更高深的技术做铺垫? 让每一篇文章都不是泛泛而谈,复制粘贴,都有它对自己技术提升 ...

  8. Webform(七)——内置对象(Session、Application)和Repeater的Command操作

    内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. 一.内置对象 (一)Session 跟Cookies一样用来存储用户数据 1.Session.Cookies对比 ...

  9. Fragment笔记整理

    前言 一直在用Fragment,但是没有系统的整理过,Google了一下相关文章,看到了几篇,将几篇还不错的文章重点整理了下,很多是直接Copy的,只为做个笔记,以后翻来看比较方便,建议大家看一下下面 ...

随机推荐

  1. --HTML标签1

    文字标签: <h>标签 标题,分为<h1>-<h6>(6级) <b>  加粗 <u> 下滑线 <s>或<strike> ...

  2. Java 字符串常用操作(String类)

    字符串查找 String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法. 1.indexOf(String s) 该方法用于返回参数字符串s在指定字符串中首次出现的索引位置, ...

  3. Spring线程池

    •依赖 spring-context-support •配置: <bean id ="taskExecutor" class ="org.springframewo ...

  4. class与struct的区别

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能: ①struct能包含成员函数吗? 能! ②struct能继承吗? 能!! ...

  5. A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记

    A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...

  6. vue-cli3快速创建项目

    文档:https://cli.vuejs.org/zh/guide/ 条件: npm 更至最新 node >=8.9 1.全局安装 npm install -g @vue/cli 或 yarn ...

  7. 学习笔记17—circos安装集(window环境)

    Windows7环境下Circos使用教程 一.下载安装软件包 1.strawberry perl 因为Circos软件是依赖perl语言编译环境的,但是windows环境下默认是没有perl的,所以 ...

  8. Inception Network

    1. 下图为一个Inception 模块,即将输入的图像通过多种过滤器或者池化操作后,全部再给拼起来形成新的图像. 2. Inception 网络就是讲将多个Inception模块连起来而已,如下图的 ...

  9. qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method

    使用Qt编写程序访问知乎官网,程序报错 qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method ...

  10. git Bash下复制粘贴

    git复制:Ctrl+insert git粘贴:Shift+Insert git常用快捷键链接地址:https://www.jianshu.com/p/cc1fbd89e087 在gitHup上下载他 ...