Session学习笔记

Session:服务器端会话技术

  1. 概念:
    *服务器端会话技术,(与Cookie不同)是将数据保存在服务器端的对象中,即存于HttpSession对象中

  2. 快速入门:

    1. 获取HttpSession对象:
      *HttpSession session = request.getSession();
    2. 使用HttpSession对象操作数据:
      1. 写入数据:void setAttribute(String name, Object value)
      2. 读取数据:Object getAttribute(String name)
        *默认Session存活时间也是一次会话,会话结束则Session自动被销毁
  3. 原理:
    *Session的实现是依赖于Cookie的。
    *当服务的资源SessionDemo1创建HttpSession对象时,会将其存放在服务器,并且将其存放地址通过响应头
    Cookie的方式JSESSIONID=3E5F8A202E7EB21EF2C86A13B1DF34B4返回给客户端;当再次发起请求SessionDemo2时,
    请求头中会包含Cookie头,且包含HttpSession对象的地址信息;
    故SessionDemo2再次获取到的HttpSession就是初始创建的那个对象,即保证了对象的唯一性。

  4. 细节:

    1. 客户端关闭,服务器端不关闭,则两次获取的Session是同一个吗?
      *默认情况下,不是同一个;因为客户端关闭意味着本次会话结束,所以再次发起会话请求时不再包含
      Session的地址于cookie头中;所以服务器端会再次创建一个Session对象
      *要想保持为同一个,则可以在创建Session对象后,再新建一个Cookie,键为JSESSIONID,值为新建的
      Session对象的IP地址;然后设置Cookie的最大存活时间,让cookie持久化保存。
    2. 客户端不关闭,服务器端关闭,则两次获取的Session是同一个吗?
      *不是同一个,就算地址一样,也是巧合。因为服务器关闭,则位于服务器端的session对象也会被销毁;
      所以就算Cookie请求头中包含Session的IP,则也不再有该Session对象了。
      *须注意的一个问题:
      *要确保服务器的数据不丢失
      * Session的钝化(序列化)
      *在服务器正常关闭之前,将session对象序列化到硬盘上
      * Session的活化(反序列化)
      *在服务器启动后,将session文件转化为内存中的session对象
      *该操作,tomcat中能够自动完成服务器的钝化与活化;然而IDEA软件只能完成服务器的钝化,并不能正常活化
      (原因是IDEA启动时,会先将钝化的数据所存放的文件夹删除,然后再重新建立该文件夹),
      所以IDEA中关闭tomcat服务器后或导致服务器端数据丢失
    3. Session的失效时间(何时被销毁)?
      1. 服务器关闭时
      2. session对象调用public void invalidate()方法
      3. session默认失效时间 30分钟
        可以在tomcat项目中更改web.xml配置文件:

        30
  5. session的特点

    1. session用于存储一次会话的多次请求的数据,存在服务器端
    2. session可以存储任意类型的数据,无大小限制

    *Session与Cookie的区别
    1. session存储数据在服务器端,而Cookie存于客户端
    2. session没有数据大小限制,Cookie有
    3. session数据相对安全,cookie相对不安全

验证码案例之Session补充

验证码案例之Session补充详细内容见此处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值