zoukankan      html  css  js  c++  java
  • Session重点整理

    首先明确几个概念

    (1)JSessionID:通过tomcat运行的Java项目,为新用户生成的随机字符串.(应该是tomcat设置的,我没试过别的服务器,如有错误请指正)

    (2)Session请求(自创概念,方便下文)-指Cookie中不含JSessionId的请求.

     一.session的结构

    session的结构类似于hashmap

    Session请求访问网站时,服务器自动生成一个sessionid,并保存在名为JSessionId的cookie中,发送回客户端.

    这个sessionid就相当于session的一个key

    二.session的生命周期

    参考:http://blog.csdn.net/u012635819/article/details/50678602

    1.session何时创建

    常见的错误是以为session在有客户端访问时就被创建,然而事实是直到某server端程序(如Servlet)调用
    HttpServletRequest.getSession(true)这样的语句时才会被创建。 

    如果你写个简单的demo,根本没用到getSession(),那根本就不会创建session,即使cookie中有JSessionID,直到访问了getSession(),通过客户端的JSessionID创建Session.

    所以在未创建session时,如果Session请求访问的页面中有session.getSession(false).getAttribute,直接报NULL错误.

    用Spring的WebUtil或者在Filter中用getSession()手动创建一个.

    2.session何时结束

    A.程序调用HttpSession.invalidate() 
    B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间 
    C.服务器进程被停止 
    再次注意关闭浏览器只会使存储在客户端浏览器内存中的cookie的JsessionId失效,不会使服务器端的session对象失效。 

    但是此时服务器仍保留失效的JsessionId,直到过期前都是无用信息了.

     当然也可以监测浏览器关闭事件发送请求清除session,不过不确定在那毫秒之间能否发送成功,有资料,没试过.

  • 相关阅读:
    11.16 Daily Scrum
    11.15 Daily Scrum
    11.14 Daily Scrum
    11.13 Daily Scrum
    必应拼音输入法与搜狗拼音输入法体验性分析检测
    必应拼音输入法与搜狗拼音输入法对比评测报告之功能评价篇
    记事本App之NABCD
    Scrum Meeting (Oct. 27 2014)
    Daily Scrum 11.12
    Daily Scrum 11.11
  • 原文地址:https://www.cnblogs.com/ptqueen/p/8351699.html
Copyright © 2011-2022 走看看