A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1049355629 初级黑马   /  2019-9-6 16:12  /  1030 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();               
               

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马