简单理解SESSION
来源:互联网 发布:php中文开发工具 编辑:程序博客网 时间:2024/05/19 04:29
网上对SESSION的介绍很多,但其描述往往偏重于某个角度,以至于像我这样的菜鸟对SESSION的理解如盲人摸象一般,始终朦朦胧胧。“SESSION”到低是个什么?经过学习,本人对SESSION终于有了一个简单却又清晰的认识。
浏览器进程(注1)和服务器进程(注2)进行通迅时,服务器进程为了区别不同的浏览器进程,会通过浏览器进程的cookie功能(注3),给每个浏览器进程“起个名字”。具体就是当浏览器进程第一次访问服务器进程,服务器进程会在浏览器进程cookie中创建一个"sessionID",同时在服务器上开辟一个该sessionID对应的存贮区域(注4)。之后每次该浏览器进程向服务器进程发送请求,服务器进程就能根据sessionID弄清楚访客身份。最常见用法比如用户登录,服务器进程接到浏览器进程访问请求后发现sessionID对应存贮区域中没有登录信息(注5),于是可以返回一个登录界面要求客户端输入帐号和密码。当浏览器进程向服务器进程提交了用户输入的帐号和密码,服务器进程验证后可以将验证结果保存在sessionID对应存贮区域中,并为之后该浏览器进程对服务器资源的访问开启绿灯。
综上所述,"SESSION"包含了以下三个部分:
1.支持cookie功能的浏览器进程
2.响应浏览器进程的服务器进程
3.服务器进程为cookie中SESSIONID开辟的对应存贮区域(数据结构)
在java web中,可通过HttpServletRequest.getSession获取到这个数据存贮区域;
注1:多年前在防页面假死技术刚流行时,曾出现几款多线程浏览器。你浏览器上打开多个窗口,但任务管理器里只能看到一个浏览器进程。这种技术有防页面假死功能,而且消耗的系统资源相对较少。不过多线程浏览器导致多个窗口共用一个SESSION,造成了应用的麻烦,再加上多线程浏览器在防假死上不如多进程浏览器彻底,所以多线程浏览器未能流行开来。
注2:服务器进程比如tomcat,它会加载我们web项目中的程序代码,并在浏览器进程发送来请求后运行这些代码。浏览器进程我们很难内窥其原理,但开源的tomcat网上有很多文章介绍其原理。
注3:理论上也可以通过URL重定向或隐藏表单什么的来代替cookie,不过现实在中谁没事去禁止浏览器的cookie功能呢?
注4:为什么不直接把数据全放浏览器进程cookie里而要在服务器端开辟个对应存贮区域?当然是为了安全。
注5:也可能第一次访问SESSION尚未建立。HttpServletRequest.getSession可以使用参数“true”表示如果SESSION不存在则新建立一个SESSION。
- Session(会话)简单理解
- 简单理解SESSION
- 简单理解session及其应用
- 关于session和cookie的简单理解
- cookie和session的区别,简单理解
- 简单的理解session 和 cookie
- session理解
- session 理解
- session理解
- session 理解
- session理解
- Session理解
- 理解session
- (php)session和cookie简单理解要点;
- page request session application作用域简单理解
- 关于cookie和session简单粗暴的感性理解
- 理解http session
- session的理解
- 【AI_数学知识】中学数学
- LeetCode-581:Shortest Unsorted Continuous Subarray (最短未排序连续子数组) -- easy
- 大华web插件
- MySQL索引原理与慢查询优化
- 【AI_常用Python库】Time库
- 简单理解SESSION
- IOS状态栏和导航栏的控制问题
- A*算法与matlab实现
- 解决iOS10及其以上系统弹出拨号框延迟的问题
- JAVA高并发程序设计
- SMTP 协议,验证 Email 地址
- 验证码生成器google kaptcha
- Socket编程实践模拟通信
- springboot+mybatis+pagehelper分页