Session

Session 是什么 ?

代表服务器与浏览器之间的一次会话过程,这个过程可以是连续的,也可以是时断时续的。而在 Web 开发语境下,则指一类用来在客户端与服务器之间保持状态的解决方案

多样的存在形式

javax.servlet.http.HttpSession
s = requests.session()
  • PHP
$_session
  • Hibernate
org.hibernate interface Session
  • WebLogic
Weblogic Server session
  • JSP
HttpSession

为什么要有 Session ?

HTTP 本身是无状态的,这与 HTTP 协议本身的目的是相符的
 当客户每次访问 Web 页面,服务器重新打开新的会话时,为了维护其上下文信息(记住同一个用户)
 由于此类种种场景,需要让 HTTP 协议成为有状态的

Session 工作原理

Session 机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息

https://picture.yuzhouwan.com/2014-11-15/session.png?imageslim

踩过的坑

Session 的创建

不是在客户端访问 Server 的时候就创建,而是在服务器的某个构建 Session 的语句被调用时

  • PHP
session_start()
  • JSP
内置对象 Session
  • Java
HttpServletRequest.getSession(true)
  • Hibernate
new Configuration.configure("hibernate.cfg.xml").buildSessionFactory().openSesssion()

SSOSingle Sign-on)

按照 Servlet 规范,Session 的作用域应该仅仅限于当前应用程序下,不同的应用程序之间是不能够相互访问对方的 Session 的
 各个应用服务器从实际效果上都遵守了这一规范,但是实现的细节却可能各有不同,因此解决跨应用程序 Session 共享的方法也不尽相同
 可以借助于第三方的力量,比如使用文件、数据库、JMS 或者客户端 cookie,URL 参数或者隐藏字段等手段
 还有一种较为方便的做法,就是把一个应用程序的 Session 放到 ServletContext 中取得前一个应用程序的引用

欢迎直接访问我的个人博客,阅读效果更佳:https://yuzhouwan.com/posts/48905/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,651评论 1 49
  • 转自 :http://blog.csdn.net/taoff/articles/1921009.aspx 一、术语...
    stone_yao阅读 6,246评论 0 31
  • 转自:http://justsee.iteye.com/blog/1570652 虽然session机制在web应...
    Maggie编程去阅读 489评论 0 6
  • Session机制 除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session...
    薛晨阅读 6,985评论 4 34
  • 我渴望,春风掠过白发的时候 年轻绿柳妩媚 在月光的灯下 摆羞涩的裙 捏一角在石凳上低眉 刹那把青青的心,分娩在我眼...
    僚片子阅读 410评论 2 8