session域对象

Session

有效范围当前会话,从浏览器打开到浏览器关闭这个过程。 

HttpSession和Cookie的区别
a)HttpSession数据存在服务器,Cookie数据存在浏览器上
b)Cookie存放数据是有大小限制的,HttpSession没有
        cookie得大小是最大4k,Cookie的个数每个浏览器不同
c)Cookie不安全,HttpSession安全


HttpSession何时创建和销毁?作用范围:
        创建:服务器端第一次调用getSession()创建HttpSession.
        销毁:三种情况销毁session:
                1.session过期. 默认过期时间为30分钟.
                2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
                        正常关闭服务器的话,session会被序列化到本地,在项目目录下会生成一个SESSIONS.ser文件,下次再打开服务器后,该文件会被反序列化.
                3.手动调用session.invalidate();
        作用范围:浏览器没有被彻底关闭之前的请求
        
        
服务器端一旦为浏览器创建session后,,浏览器端访问该页面时会携带一个cookie信息(请求头)
Cookie        JSESSIONID=967DD636E09AF2E1D727A4FEAD6629E8


HttpSession创建的注意事项
        a)IE8文件选项里的新建会话的方式去打开新的窗口访问页面,服务器则会为新的浏览器窗口重新创建一个新的session
        b)浏览器中的隐私浏览去打开新的窗口访问页面,服务器则会为新的浏览器窗口重新创建一个新的session
        c)正常情况下,开启浏览器后只要不是彻底关闭浏览器的话,访问页面则会公用同一个session
        d)注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,则活化后session还是存在的。否则Session不存在。如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。

【HttpSession的问题】
        访问Servlet会不会创建Session        : 不会
        访问JSP会不会创建Session                :会. 
        访问html会不会创建Session                :不会        

        

作为域对象进行存取数据

        a) 保存属性
                void         setAttribute(String name,Object value);
        b) 取出属性
                Obejct         getAttribute(String name);
        c) 移除属性        
                void         removeAttribute(String name);


设置session过期时间

        a)在web.xml配置seesion-config标签
        
                销毁session的话需要在web.xml文件中配置
                          <session-config>
                                   <!-- session在1分钟之后就被销毁 -->
                                   <session-timeout>1</session-timeout>
                          </session-config>
                          
        b)代码设置
        
                HttpSession session = request.getSession(true);  
                session.setMaxInactiveInterval(900);

        c)tomcat默认过期时间是30分钟

        d)手动销毁seesion
        
                HttpSession session = request.getSession(true); 
                session.invalidate();                

更多免费技术资料可关注:annalin1203

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章