什么是Session

使用Cookie和附加URL参数都可以将上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。
Session技术是一种将会话状态保存在服务器端的技术 ,它可以比喻成是医院发放给病人的病历卡和医院为每个病人保留的病历档案的结合方式 。 
客户端需要接收、记忆和回送 Session的会话标识号,Session可以且通常是借助Cookie来传递会话标识号。

同一用户的不同页面共享数据(Session)

如何理解Session

Session的跟踪机制

1.Servlet API规范中定义了一个HttpSession接口,HttpSession接口定义了各种管理和操作会话状态的方法。

2.HttpSession对象是保持会话状态信息的存储结构,一个客户端在WEB服务器端对应一个各自的HttpSession对象。

3.WEB服务器并不会在客户端开始访问它时就创建HttpSession对象,只有客户端访问某个能与客户端开启会话的Servlet程序时,WEB应用程序才会创建一个与该客户端对应的HttpSession对象。

4.WEB服务器为HttpSession对象分配一个独一无二的会话标识号,然后在响应消息中将这个会话标识号传递给客户端。客户端需要记住会话标识号,并在后续的每次访问请求中都把这个会话标识号传送给WEB服务器,WEB服务器端程序依据回传的会话标识号就知道这次请求是哪个客户端发出的,从而选择与之对应的HttpSession对象

如何使用Session

Session的超时管理

WEB服务器无法判断当前的客户端浏览器是否还会继续访问,也无法检测客户端浏览器是否关闭,所以,即使客户已经离开或关闭了浏览器,WEB服务器还要保留与之对应的HttpSession对象。

随着时间的推移而不断增加新的访问客户端,WEB服务器内存中将会因此积累起大量的不再被使用的HttpSession对象,并将最终导致服务器内存耗尽。

WEB服务器采用“超时限制”的办法来判断客户端是否还在继续访问,如果某个客户端在一定的时间之内没有发出后续请求,WEB服务器则认为客户端已经停止了活动,结束与该客户端的会话并将与之对应的HttpSession对象变成垃圾。

如果客户端浏览器超时后再次发出访问请求,WEB服务器则认为这是一个新的会话的开始,将为之创建新的HttpSession对象和分配新的会话标识号。

会话的超时间隔可以在web.xml文件中设置,其默认值由Servlet容器定义。

<session-config>

<session-timeout>30</session-timeout>

</session-config>

session实现原理

IE禁用Cookie后的session处理

解决方案:URL重写

response. encodeRedirectURL(Java.lang.String url)

用于对sendRedirect方法后的url地址进行重写。

response. encodeURL(java.lang.String url)

用于对表单action和超链接的url地址进行重写

什么是Session 如何使用Session相关推荐

  1. session传递参数_分布式 Session 之 Spring Session 架构与设计

    作者 | 李增光 杏仁后端工程师.「只有变秃,才能变强!」 ​前言 开始进行 Web 开发时,我们可能会遇到这样的情况,当服务器重启之后,之前的登录状态会失效需要重新登录.又或者你的应用程序部署了不止 ...

  2. Session分布式共享 = Session + Redis + Nginx

    一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下. Session:在计算机中,尤其是在网络应用中,称为"会话控制 ...

  3. php session 域,PHP session 跨子域问题总结

    今天,做项目时候遇到个问题.之前做东西的时候session一般就直接存在数据库中这样就能解决跨域 不仅仅是跨子域,但是今天遇到这个问题是,自己要在别人现有的东西上面做修改.由于仅仅是子域 当时就行肯定 ...

  4. session、flask session知识的相关收集

    1.打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的ses ...

  5. 利用spring session解决共享Session问题

    https://blog.csdn.net/patrickyoung6625/article/details/45694157 1.共享Session问题 HttpSession是通过Servlet容 ...

  6. Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案

    文章目录 Cookie VS Session VS Token History Cookie Session Token Session不一致问题 Session不一致解决方案 nginx sessi ...

  7. Tomcat的SessionID引起的Session Fixation和Session Hijacking问题

    上一篇说到<Spring MVC防御CSRF.XSS和SQL注入攻击>,今天说说SessionID带来的漏洞攻击问题.首先,什么是Session Fixation攻击和Session Hi ...

  8. 深度实现session【包括session入库、session机制和session和cookie的使用方法,完善会话机制(在分布式机器中也能使用)】、无限分类的实现...

    1.session的注意点: @session_start();//这个配置需要注意,session开启中会有影响,所以使用错误抑制符进行限制[并且使用php.ini对session进行自动开启] s ...

  9. 单点登录实现(spring session+redis完成session共享)

    一.前言 项目中用到的SSO,使用开源框架cas做的.简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩. 二.工程结构 我模拟了 sso的客户端和s ...

  10. 将登录等信息保存到session中和退出session

    做项目时,可能会将某些信息保存在session中,如登录等信息,这样方便在某些页面使用这些保存的信息. 要想保存这些信息,需要创建一个类,该类里面定义需要保存的变量等信息,当登录后就通过new一个该类 ...

最新文章

  1. java qq协议 c#,C# WebQQ协议群发机器人(三)
  2. HDFS文件详情查看案例
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1071:菲波那契数
  4. 20220202--CTF刷题MISC方向--第5题--反编译
  5. 计算机二级C语言易混淆的区别
  6. 前端学习(2008)vue之电商管理系统电商系统之获取静态属性列表
  7. JWT ( JSON Web Token ) 入门教程
  8. es 怎么嵌入 算法模型_快速ES-RNN: ES-RNN算法的GPU实现
  9. Java:节点流和处理流的理解
  10. Video和Audio标签的使用
  11. mybatis中转义 大于,小于,大于等于,小于等于
  12. 研究自动驾驶技术的算法需要哪些知识?
  13. wxpython grid设置字体颜色_Ext grid改变行背景颜色 和改变行字体颜色
  14. 7-16 Sort with Swap(0, i)(25 分)
  15. 微型计算机原理与接口技术知识点
  16. csapp bomb lab (《深入理解计算机系统》lab2)
  17. 用AI视觉芯片打造舱内舱外全开放解决方案
  18. 去掉图题注 空格_【转载】论文排版-Word插入题注时自动删除标签与编号前的空格,编号后添加空格...
  19. PAC模式与全局模式的区别
  20. 数一数Google的软件和服务

热门文章

  1. C语言标识符有哪三类
  2. c语言文字转语音代码,C语言实现将文字转为语音
  3. excel 域 邮件合并_如何获得免费的电子邮件域(5种快速简便的方法)
  4. 计算机软件的配置管理程序,冰点还原精灵配置管理程序
  5. 计算机机房门尺寸,门的尺寸怎么量呢
  6. AIBU-在建工程转固定资产(预转固)报错:消息号AW002 资产无单项需结算
  7. C++ enum前置声明
  8. qq群关系数据库 mysql_QQ群关系数据库24.52G mdf源文件下载 附上使用教程
  9. mysql5_7winx64,MySQL 5.7.30 Winx64 安装
  10. mysql5.7.19winx64安装_winx64下mysql5.7.19的基本安装流程(详细)