创建session 
在具体说明session的创建过程之前,先看一下BS访问模型: 

  1. browser发送Http request;
  2. tomcat内核Http11Processor会从HTTP request中解析出“jsessionid”(具体的解析过程为先从request的URL中解析,这是为了有的浏览器把cookie功能禁止后,将URL重写考虑的,如果解析不出来,再从cookie中解析相应的jsessionid),解析完后封装成一个request对象(当然还有其他的http header);
  3. servlet中获取session,其过程是根据刚才解析得到的jsessionid(如果有的话),从session池(session maps)中获取相应的session对象;这个地方有个逻辑,就是如果jsessionid为空的话(或者没有其对应的session对象,或者有session对象,但此对象已经过期超时),可以选择创建一个session,或者不创建;
  4. 如果创建新session,则将session放入session池中,同时将与其相对应的jsessionid写入cookie通过Http response header的方式发送给browser,然后重复第一步。

(Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密))
以上是session的获取及创建过程。在servlet中获取session,通常是调用request的getSession方法。

服务器端是怎么判断会话过期的呢?原理服务器会启动一个线程,一直查询所有的Session对象,检查不活动的时间是否超过设定值,如果超过就将其删除。

Session会话信息不会一直在服务器端保存,超过一定的时间期限就会被删除,这个时间期限可以在 web.xml中进行设置,不设置的话会有一个默认值,Tomcat的默认值是60.

最新文章

  1. (三)Netty源码学习笔记之boss线程处理流程
  2. Js运动框架
  3. JAVA之Forward 和 Redirect的区别
  4. 10月14日下午MySQL数据库基础
  5. java链式编程设计
  6. [Java] 利用LinkedHashMap来实现LRU Cache
  7. 在cmd中运行带包名的java程序
  8. win7+ubuntu双系统安装攻略
  9. BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
  10. js中slice(),splice(),split(),substring(),substr()的使用方法和区别
  11. paip.QQ音乐导出歌单总结
  12. org.eclipse.birt.report.data.oda.jdbc.JDBCException: Missing properties in Connection.open(Propertie
  13. java课程设计---彩票销售管理系统
  14. 1、Http概述
  15. NDK工具开发Jni,Android studio jni开发
  16. 2.Servlet 请求、响应及重定向
  17. 利用js给datalist或select动态添加option选项
  18. PHP操作redis详细讲解(转)
  19. Qt shortcuts
  20. circRNA

热门文章

  1. django中使用POST方法 使用ajax后出现“CSRF token missing or incorrect”
  2. java创建web服务
  3. IntelliJ IDEA 注册码-使用帮助
  4. 解决在SharePoint 2010/2013部署自己的Event Handler后,抛出”不能载入被引用的第三方的程序集"的问题
  5. 读取csv格式的数据
  6. 【转】VC++的Unicode编程
  7. WPF MVVM(Caliburn.Micro) 数据验证
  8. 如何交换a,b的数值——一个简单的问题就证明现在的你依然弱爆了
  9. ChemDraw绘制DNA结构的技巧
  10. NLM算法