美文网首页
浅谈Session

浅谈Session

作者: 好久不见甚是想念 | 来源:发表于2018-01-15 20:55 被阅读0次

    一. Session技术

    Cookie的局限性:
            1. 限制数据类型
            2. 不能保存中文
            3. Cookie容量比较小,只有4KB
            
        如果要保存4KB以上数据,或者要保存中文的数据,就不能使用Cookie技术,只能使用Session
        
        如果浏览器没有打开Cookie功能 Session就没有用!!!
        
        Session 的特点:
            会话数据保存在服务器上。(保存在服务器的内存中) temp文件
        
    核心技术
        HttpSession类型: 是服务器用于保存会话数据的方式
    
            获取Session对象:
                HttpSession getSession();
                HttpSession getSeesion(boolean create);
            
            设置Session对象:
                void setMaxInactiveInterval(int interval); // 设置Session的有效时间
                void invalidate(); //销毁Session
                String getId();    //返回Session的ID号
               
            保存会话数据到Session对象中:
                void setAttribute(String name, Object obj); //设置Session保存会话数据,可以是一个Object对象
                Object getAttribute(String name); //更加Session的ID获取数据
                void removeAttribute(String name); //清除Session数据
    
    Session的原理:
        功能是让服务器更快的识别不同的访问者
        
        前提:
            在哪一个Session【域对象】中保存的数据,就必须从哪一个Session【域对象】拿出数据
            
        
        服务器:Server1  浏览器:Browser1
        
        
        Browser1:保存了一个Server1给他分配的唯一的标识号,用cookie来保存
            服务器会创建一个Session 
                HttpSession session = request.getSession(); //保存浏览器Cookie信息中带有是SessionID,创建对应的
                                                            //Session对象
        
        Browser1新窗口: 因为是同一个浏览器,所以这里也会带有之前服务器给分配的SessionID信息
            服务器或根据浏览器的信息得到对应的Session
                HttpSession session = request.getSession();
                
        
        解读一下:HttpSession session = request.getSession();
        1)如果是浏览器第一次访问服务器,就会创建一个新的Session对象,用来保存和这个浏览器的会话数据
        并且生成一个唯一的sessionID,叫做 JSESSIONID
        2)会被JSESSIONID作为Cookie的值发送给浏览器,保存
            Cookie cookie = new Cookie("JSESSIONID", sessionID);
            response.addCookie(cookie);
        3)如果是第二次访问,浏览器是带有Cookie信息,在Cookie信息中有一个Cookie 叫做 JSESSIONID
        这个JSESSIONID就会发送给服务器
        4)服务器如果接受到了JSESSIONID信息,就会通过HttpSession session = request.getSession();得到
        对应的Session对象,进行浏览器和服务器直接的会话数据传递和控制
        
        
        【注意】
            在Tomcat服务器中,Session 的名字是JSESSIONID,给浏览器保存的Cookie信息中,只有
            Cookie名字是JSESSIONID的这个Cookie里面保存的才是服务器任务的SessionID
            
            不同的服务器判断是否是一个SessionID内容的方式不一样,
            在PHP中,浏览器Cookie名字为PHPSESSID这是Apache服务器认为的SessionID

    相关文章

      网友评论

          本文标题:浅谈Session

          本文链接:https://www.haomeiwen.com/subject/ciadoxtx.html