当你看到 “会话” 这个词的时候,你会怎么理解呢?是交流、对话的意思吗?那毫无疑问绝对是的啦,只不过那是传统意义上的,或者说是日常生活中的意思,在计算机科学领域,它的意思就要引申一些了。在维基百科上是这样说的:

在计算机科学领域来说,尤其是在网络领域,会话(session,Microsoft Windows 中文版译作工作阶段)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制,session在网络协议(例如telnet或FTP)中是非常重要的部分。

在百度百科上是这样说的:

在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。

这两个说的其实是一个意思,就是说在终端和服务器端之间建立了一个关联,在关联有效期内的过程就是一次会话。(你可以理解成你给10086打电话,通电话期间就是一次会话)

Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一些列的请求和响应的交互过程。 在一个会话中,用户可以访该Web应用系统中包括网页在内的多种资源。
       当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(浏览器关闭或用户长时间不访问Web应用)。而JSP中使用session对象来表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取(读到这儿你好像感觉不出来,可能会用疑问:哪有什么session,我怎么就可以随时获取了?其实不然,你每次再一次访问(我指的是在当前浏览器窗口,新开的不算)该Web应用系统时,其实浏览器都默默的使用了该已被保存了的信息,下面我会细讲)。
       浏览器关闭只是中断了和Web服务器的联系,但是session对象依然存在服务器终端(会有一个时常,通常为30min),如果时间超时,则Web服务器就会将其删除;如果服务器正常关闭,则将对象序列化到SESSIONS.ser文件内,当服务器重新启动,就会将该文件中session对象重新反序列化。

下面来说一下session的运行机制:

session的运行机制:

  1. 用户(浏览器)向Web应用服务器发送第一次请求时,请求头部中不包含sessionID(session唯一标识),则服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端;

  2. 用户(浏览器)再次向Web应用服务器发送请求时,请求头部包含sessionID,则服务器首先会通过sessionID找到对应的session,以确定是这个客户端访问服务器,此时sessionID不会再次随着本次响应返回给客户端;如果该session因超出时长而被Web服务器删除,则重新创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端;
    客户端没有禁用cookie的情况下,客户端使用cookie保存sessionID。如果cookie禁用,则会自动转化为用URL-rewriting(URL重写,URL中包含sessionID)技术实现。

如果哪位同志感兴趣自己试了一把(假如用百度页面去试),会发现,sessionID和上面的形式不一样了,其实不用大惊小怪,sessionID是很重要的东西,当然需要严格保密了!


下面再来补充一些session常用的方法:

session常用方法:

  • setAttribute(“key”,“value”):设置指定名字的参数;session中保存的对象随着Tomcat服务器正常关闭(通过shutdown.bat关闭)而保存到work文件夹相应的目录中(Tomcat安装根目录\work\Catalina\localhost\xxx),随Tomcat的启动而重新使用。
  • getAttribute(“key”):获取指定属性的值,如果该属性值不存在则返回null;
  • removeAttribute(“key”):删除session中的一个属性;
  • getID(“key”):获取sessionID;
  • isNew():每个请求是否会产生新的session对象;
  • setMaxInactiveInterval():设置停止操作后session对象的有效时间。

session与cookie比较:

session cookie
保存位置 服务器端 浏览器客户端
存储类型 对象 字符串
生命周期 随会话结束而关闭 可指定时长
存放信息重要性 重要信息 非重要信息

session对象运行机制相关推荐

  1. session实现机制_如何理解php session运行机制

    php session运行机制就是客户端将session id传入到服务器中,服务器再根据session id找到对应的文件并将其反序列化得到session值,然后保存的时候先序列化再写入今天将要分享 ...

  2. 静态对象、全局对象与程序的运行机制

    静态对象.全局对象与程序的运行机制 1.   在介绍静态对象.全局对象与程序的运行机制之间的关系之前,我们首先看一下atexit函数. atexit函数的声明为:int atexit( void ( ...

  3. es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器

    文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...

  4. Ray --内部运行机制、对象存储中对象的存储和容错

    本篇主要介绍了分布式框架 Ray 的内部运行机制,对象的存储过程和容错能力.内部运行机制主要分为Ray的连接,远程函数的定义和使用以及获取对象ID的运行机制.对象存储主要是对象放入的序列化和从对象调出 ...

  5. Session对象失效的客户端解决方法

    ASP(Active Server Pages)技术的Session对象用于存储用户在对话期间的私有信息.当前用户的Session对象中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问 ...

  6. 探究php底层运行机制

    本文转载自:http://www.myext.cn/Article/921.html 概要 简介 先看看下面这个过程: 我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的:  ph ...

  7. IIS和Asp.Net页面运行机制

    在.NET平台下进行Web开发主要运用的是Asp.Net框架,了解其运行机制更能让我们写出高质量的程序,修复不常见的bug. 最近想把这个用博客的形式记录下来.翻阅了一些书籍,浏览了一些大大们,如有雷 ...

  8. TensorFlow的运行机制

    TensorFlow的命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算.TensorFlow是张量从图的一端流动到另一端的计算过程,这也是Tenso ...

  9. JSP的基本语法及运行机制

    一,JSP的基本语法 指令 代表当前页面的属性设置 conentType:页面的内容的类型 text/html; charset=utf-8 import:导入要用到的包 import:导入要用到的包 ...

最新文章

  1. delegate委托
  2. 【Java自顶向下】ConcurrentHashMap面试题(2021最新版)
  3. Scaleform GFx
  4. uva 10479——The Hendrie Sequence
  5. CI-持续集成(2)-软件工业“流水线”技术实现
  6. 开源.net 混淆器ConfuserEx
  7. python培训班-python培训班哪家好
  8. 可以替代树莓派4(raspberry pi 4B)的tinker board 2
  9. 计算机磁盘图标显示异常,Win7磁盘图标显示错误是怎么回事?修复分区磁盘图标异常教程...
  10. windows的cmd命令检测ip或者端口是否连通
  11. Java 实现钉钉企业内部应用免登
  12. 聚合黑科技(电脑端)
  13. 布隆过滤器(Bloom Filter)初探
  14. 面试必考HTTP协议面试题(含答案)
  15. DASCTF安恒三月赛re部分复现
  16. 【C字符串处理】【参数传递】 一次又傻又颇有成就感的 服务器自动编译 参数传递 调试经历
  17. 微分方程数值解法(欧拉方法)
  18. 教育培训app开发过程中有哪些难点?应如何解决?
  19. Follow your heart (174)----礼物,逛街,吃饭,像小女人一样生活
  20. 今日学习内容--机器学习的测试集选择方法

热门文章

  1. hibernate 和 mybatis 的区别
  2. 写扩展性好的代码:函数
  3. Thunder团队第三周 - Scrum会议7
  4. 《梦断代码Dreaming In Code》阅读笔记(三)
  5. 【Mood 19】DailyBuild 2月
  6. Lesson 59-60 Househusband
  7. 得到的旋转向量和平移向量转换成旋转矩阵 (SE(3))
  8. Asp.Net 动态生成验证码
  9. Asp.NET中常用的一些优化性能的方法
  10. Nginx源码分析--字符串处理