HttpSession接口简介和工作原理

本文介绍了Servlet规范中的HttpSession接口及其工作原理,包括如何通过Cookie关联用户,Cookie与HttpSession的区别,以及如何在Servlet中操作HttpSession。还讨论了getSession()与getSession(false)的区别和HttpSession的生命周期管理,包括销毁机制。
摘要由CSDN通过智能技术生成

介绍:

        来自于Servlet规范中接口。其实现类由Http服务器提供,tomcat提供的实现类在于servlet-api-jar 。
        如果两个Servlet为同一个用户/同一个浏览器提供服务。此时这两个Servlet可以使用当前用户的HttpSession对象进行数据共享,开发人员习惯于将HttpSession对象称为【会话作用域对象】
http服务器如何将用户与HttpSession关联起来————————通过cookie

Cookie与HttpSession区别? 

1.存放位置不同

             Cookie 存储在客户端计算机的内存中或则硬盘

              HttpSession存储在服务端计算机的内存

  2.存储数据量不同

                一个Cookie对象只能存放一个共享数据

                HttpSession对象可以存放任意数量的共享数据

  3.存储数据类型不同

                Cookie对象由于存放客户端计算机,保存共享数据只能是String

                HttpSession对象存放服务端计算机,保存任意类型共享数据Object

   4.参照物不同

                    Cookie----------------->用户在服务端得到一个 会员卡

                   HttpSession------------>用户在服务端得到一个 私人保险柜

HttpSession的工作原理

         用户通过浏览器第一次访问Servlet。

        Servlet在提供服务过程中要求,

        Tomcat为当前用户开发一个【私人储物柜(HttpSession对象)】.Tomcat在创建这个HttpSessio对象时,生成一个唯一编号.这个编号称为session Id

        Servlet工作完毕后。Tomcat将session Id作为一个Cookie对象 ('JSESSIONID',柜子编号)写入到响应头

        然后浏览器在接收到响应包之后,将这个cookie保存在浏览器的内存中等到用户第二次来访问这个网站时,自动发送这个cookie对象此时提供服务的TwoServlet 就可以凭借柜子编号得到用户的私人储物柜并读取由OneServlet写入的共享数据

命令实现:
         1.向Tomcat索要当前用户的私人储物柜

                  HttpSession session = 请求对象.getSession();

                  HttpSession session = 请求对象.getSession(false);

         2.将数据存入到当前用户的私人储物柜作为共享数据

                  session.setAttribute("共享数据名",共享数据Object);

        3.将数据从当前用户的私人储物柜读取出来

                      Object 共享数据 =  session.getAttribute("共享数据名")

getSession() 与 getSession(false)区别?


1.getSession()

        如果当前用户在服务端已经拥有了私人储物柜。此时直接将这个柜子返回Tomcat。

       如果当前用户在服务端尚未拥有私人储物柜要求Tomcat,为当前用户创建一个新的私人储物柜返回。

2.getSession(false)

     如果当前用户在服务端已经拥有了私人储物柜。此时直接将这个柜子返回Tomcat,

    如果当前用户在服务端尚未拥有私人储物柜 此时要求Tomcat返回null

       

 生命周期


       1. 用户第一次向Tomcat索要会话作用域对象时,由Tomcat负责生成
       2. 由于JSESSIONID只能存放在浏览器缓存中,所以在浏览器关闭时用户与自己的HttpSession对象失去联系
        3.如果HttpSession对象空闲时间达到【最大空闲时间】,此时Tomcat认为当前用户放弃了自己的HttpSession,此时进行销毁处理。

HttpSession销毁方式


       Tomcat在创建HttpSession对象时,自动设置一个【最大空闲时间】.如果这个HttpSession对象从上次使用完毕到现在空闲的时间达到【最大空闲时间】,上限,此时Tomcat负责将这个HttpSesion对象进行销毁。Tomcat默认设置最大空闲时间是30分钟。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值