Session基础知识

主题

概念

 Session的创建

Session的存储机制

Session的失效

参考资料

 

概念

       Session代表一次用户会话。一次用户会话的含义是:从客户端浏览器连接服务器开始,到客户端浏览器与服务端断开为止,这个过程就是一次会话。

      Session机制采用的是在服务端保存状态的方法。

Session的创建

       当客户端向服务器发送一个请求时,服务器首先检查请求里是否包含SessionID,如果包含了SessionID则说明该客户端已经登录过并且服务端为此客户端创建了一个Session,服务器就依照SessionID将这个Session在服务器中找出来(如果找不到,就有可能为他新创建一个)。如果客户端请求里不包含SessionID,则为该客户新创建一个Session并生成一个与此Session相关的SessionID。这个SessionID是不重复的,唯一的,不容易找到规律的字符串。这个SessionID将在本次响应中返回到客户端保存。

      Session是在服务端调用HttpServletRequest.getSession(true);这样的语句时才被创建,如果JSP没有显式的使用<%@page Session=”false”%> 关闭Session,则JSP文件在编译成Servlet时将会自动加上HttpServletRequest.getSession(true);这就是JSP内置对象session的由来。

Session的存储机制

       一般情况下,Session都是存储在内存中,当服务器进程被停止或者重启的时候,内存里的Session也会被清空。如果设置了Session的持久化特性,服务器就会把Session保存到硬盘上,当服务器进程重新启动后Session里的信息能够被再次使用。

      Session的存储方式及各存储方式下Session属性值是否需要可序列化:

      InProc(默认) :不需要序列化,存放在IIS进程中(内存),重启IIS服务器时会话状态消失。

      SQLServer:需要序列化,存放在数据库中,存储在硬盘中。

      StateServer:需要序列化, 存放在Asp.Net状态服务进程中,重启Web应用时保留会话状态。

Session的失效

    Session在下列情况下失效:

   程序调用HttpSession.invalidate();

   距离上一次收到客户端发送的SesionID时间间隔超过了Session的超时设置,tomcat默认session超时时间为30分钟;

   服务器进程被停止(非持久Session);

      我们常说打开浏览器就创建了一个Session,关闭浏览器时Session也被删除,事实上,除非程序通知服务器删除Session,否则Session会被服务器一直保留,直到Session的失效时间到了自动删除。服务器不知道浏览器被关闭,浏览器不会主动地在其关闭之前通知服务器它将要关闭。程序一般是在用户注销后删除Session。我们产生这种错觉地原因是:一般Session机制都使用cookie来保存SessionID,而一旦关闭浏览器,SessionID就不存在了,再连接服务器时找不到原来的Session了。如果cookie保存在硬盘中,或者用某种手段改写浏览器发出的 HTTP请求头,把原来的SessionID发送给服务器,则再次打开浏览器仍然能够找到原来的Session。

       恰恰由于关闭浏览器时不会让Session被删除,迫使服务器为Session设置了一个失效时间。当距离客户端上一次使用Session的时间超过失效时间,服务器就认为客户端已经停止了活动,才会把Session删除以节省存储空间。

   

     

参考资料

http://www.cnblogs.com/literoad/archive/2012/05/13/2498528.html

     

      

Session基础知识的更多相关文章

  1. http session 基础知识

    因为Http的无接连,无状态,所以造就了Cookie,Session的诞生. Session也是类似Cookie一样的功能,用于记录客户端浏览器与服务器端交互的会话状态.它与Cookie的重要区别是: ...

  2. cookie和session基础知识学习

    一.session的简单使用 session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个独享的session对象.session的使用步骤: 获取session对象使用session ...

  3. cookie 和 session 的基础知识

    cookie 和 session 的基础知识 cookie 和session 的区别详解 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会 ...

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

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  5. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  6. Python黑帽编程3.0 第三章 网络接口层攻击基础知识

    3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...

  7. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  8. JVM 基础知识

    JVM 基础知识(GC) 2013-12-10 00:16 3190人阅读 评论(1) 收藏 举报 分类: Java(49) 目录(?)[+] 几年前写过一篇关于JVM调优的文章,前段时间拿出来看了看 ...

  9. android图形基础知识

    Android核心分析(23)-----Andoird GDI之基本原理及其总体框架 2010-06-13 22:49 18223人阅读 评论(18) 收藏 举报 AndroidGDI基本框架 在An ...

随机推荐

  1. $ gulp watch 运行出错解决方法

    $ gulp watch 运行出错解决方法   $ gulp watch     如果你出现了如下报错信息: gulp-notify: [Laravel Elixir] Browserify Fail ...

  2. ant-design 实现 添加页面

    1.逻辑代码 /** * 添加用户 */ import React,{PureComponent} from 'react' import {Card,Form,Input,Select,Button ...

  3. jQuery控制form表单元素聚焦

      CreateTime--2017年5月28日08:57:16Author:Marydon jQuery使form表单的第一个文本框聚焦 /** * 使form表单的第一个文本框聚焦 */ func ...

  4. hadoop native本地库问题总结

    近期,打算hbase建表用snappy压缩时,碰到一些hadoop本地库的问题. 事实上这些问题是一直存在的,仅仅是不影响正常使用,就没有引起重视. 这次希望彻底解决下面问题: 问题一:运行start ...

  5. 将 ASP.NET Core 2.0 项目升级至 ASP.NET Core 2.1

    主要升级步骤如下: 将 .csproj 项目文件中的 target framework 改为 netcoreapp2.1 <TargetFramework>netcoreapp2.1< ...

  6. cygwin开发环境搭建与apt-cyg的应用

    1.Cygwin安装 http://www.cygwin.com/下载安装工具 详细安装过程參照http://jingyan.baidu.com/article/6b97984d83dfe51ca2b ...

  7. Android中图片的三级缓存策略

    在开发过程中,经常会碰到进行请求大量的网络图片的样例.假设处理的不好.非常easy造成oom.对于避免oom的方法,无非就是进行图片的压缩.及时的回收不用的图片.这些看似简单可是处理起来事实上涉及的知 ...

  8. Atitit.编程语言的基础句型and汉语英文比较

    Atitit.编程语言的基础句型and汉语英文比较 1. 编程语言常见的句型1 1.1. Verb(obj)1 1.2. If  then else1 1.3. For1 2. 英语中的五种基本句型结 ...

  9. Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap

    Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap 1.1. 虚拟机的构成 java虚拟机--处理器.堆栈.寄存器.指令系统. 1 1.2. 虚拟机执行过程 ...

  10. Avira Free Antivirus 小红伞免费杀毒软件广告去除工具

    Avira Free Antivirus 小红伞免费杀毒软件经常跳出广告, 用起来比较烦, 这里提供一个广告去除的免费小工具. 原理就是用组策略来阻止广告的跳出, 网上到处都是. 一键傻瓜式去除, 也 ...