JavaWeb笔记(11)-会话中的Session

  1. Session:服务器端会话技术
1. Session:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端
2. 使用步骤:
    a. 获取HttpSession对象:
        HttpSession hs = request.getSession();
    b. 使用HttpSession对象:
        * Object getAttribute(String name);
        * void setAttribute(String name, Object value);
        * void removeAttribute(String name);
            -- 如果想要实现一次性效果,则在get方法获取完存储的对象后,应该使用remove方法清空该属性原有的值
3. 实现原理:
    * Session的实现是依赖与Cookie实现的
    * 实现步骤:
        1. 当浏览器第一次请求服务器资源时,如果没有cookie信息,服务器创建一个Session对象
        2. 在对第一次请求做出的响应中,会在set-cookie属性中添加键值对:JSESSIONID=Session对象id值
        3. 该id值为服务器为创建的Session对象分配的id,用于找到该对象
        4. 当浏览器解析到set-cookie属性时,下一次请求会在cookie属性中传送该键值对
        5. 服务器解析后再通过request.getSession()创建对象时,就会返回该id值指向的Session对象
4. Session对象细节:
    a. Session对象的生存周期:
        1. 浏览器关闭,服务器不关闭:
            -- 默认情况下,浏览器关闭后会话结束,清空cookie信息
            -- 重新打开浏览器时,再次申请时,会由于没有cookie中的JSESSIONID字段而创建一个新的Session对象
            * 如果需要访问同一个Session对象
            -- 通过创建一个Cookie对象,设置cookie在客户端的存活时间,可以将该键值对保存在浏览器本地
            -- 下次访问时可以携带已有Session对象的id值获取相同的Session对象
        2. 浏览器不关闭,服务器关闭重启:
            -- 默认情况下,服务器关闭重启会话结束,本地内存中的资源被释放清空
            -- 浏览器继续访问时,由于服务器内存中没有该指定id值的Session对象,则创建一个新的Session对象,并更新id值
            * 如果需要访问同一个Session对象:在服务器关闭前将Session对象序列化到硬盘上,重启后反序列化到内存中
            -- 对于部署完成的项目(指在tomcat的webapp目录下),tomcat会自动完成该序列化和反序列化工作
            -- 正常关闭tomcat服务器,会在work目录下保存该Session对象
            -- 重新开启tomcat服务器后,会自动读取该文件并删除该文件在硬盘的保存
            -- 在工作空间的项目(IDEA目录下),文件序列化(钝化)操作可以将Session对象保存在其out目录下的work目录中
            -- 但是IDEA重启tomcat后,会首先删除out目录下的work目录,然后新建一个work目录,因此无法读取到该对象
        3. Session对象销毁
            * 服务器关闭
            * 调用成员方法invalidate()销毁
            * 服务器不关闭,默认30分钟后销毁
                -- 在web.xml在可以修改默认配置
                    <session-config>
                        <session-timout>40</session-timeout>
                    </session-config>
5. Session对象特点:
    a. 可以存储任意类型,任意大小的数据 -- Cookie大小有限制
    b. 用于存储一次会话的多次请求的数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值