HttpSession介绍

 关于web编程中的Session
    1.session表示会话,不止在javaweb中存在,只要是web开发就存在这种机制。
    2.在java中会话对应的类型是:javax.servlet.http.HttpSession简称Session
    3.Cookie可以将会话状态保存在客户端,HttpSession可以将会话状态保存在服务器端。
    4.HttpSession对象是一个会话级别的对象,一次会话对应一个Session对象,
    5.什么是会话?
       -“目前”可以理解为:用户打开浏览器,在浏览器上发送多次请求,直到最终关闭浏览器,表示一次
       完整的会话。
    6.在会话进行过程中,web服务器一直为当前这个用户维护着一个会话对象/httpSession。
    7.在WEB容器中,WEB容器维护了大量的HttpSession对象,换句话说,在WEB对象中有一个Session
               列表,思考:为什么当前会话中的每一次请求可以获取到属于自己的会话对象?Session的实现原理?
      -打开浏览器,在浏览器首次发送请求
      -服务器会创建一个HttpSession对象,该对象代表一次会话
      -同时生成HttpSession对象对应的Cookie对象,并且Cookie对象的name是JSESSIONID
      ,Cookie的Value是32位长度的字符串。
      -服务器将Cookie的Value和HttpSession对象绑定到Session列表中,
      -服务器将Cookie完整发送给浏览器客户端。
      -浏览器客户端将Cookie保存到缓存中,
      -只要浏览器不关闭,Cookie不会消失
      -当再次发送请求的时候,会自动提交缓存中的Cookie
      -服务器接收到Cookie,验证该Cookie的name是JSESSIONID,然后获取Cookie的value
      -通过Cookie的Value去Session列表中检索对应的
    8,浏览器关闭之后,Session对象还存在吗?
      -还存在,不会销毁Session对象
      -因为B/S架构的系统基于Http协议,而Http协议是无连接,无状态的协议。
      -请求的瞬间浏览器和服务器的通道是打开的,请求响应结束之后,通道关闭,这样做的目的是降低
      服务器的压力。
    9.session对象什么时候被销毁?
      -当很长一段时间没用用户再访问该Session对象,此时Session对象超时,web服务器会自动回收
      Session对象。
      -Session对象的配置:
       <session-config>
      //两个小时只能没有在访问,不配置默认时间是半个小时。
       <session-timeout>120</session-timeout>
       </session-config>
     10.什么是一次会话?
       -一般多数情况下,用户打开浏览器,在浏览器上进行一些操作,然后将浏览器关闭,表示一次会话结束
       -本质上的描述:从Session对象的创建,到最终Session对象销毁,这个才是真正意义的一次
       完整的会话。
     11.httpSession的主要方法:
          void setAttribute(String name,Object value);
          Object getAttribute(String name);
          void removeAttribute(String name);
          void invalidate();//销毁session的
     12.ServletContext、HttpSession、HttpServletRequest  
         12.1以上三个接口都是范围对象
           -ServletContexnt application ;是应用范围;
           -HttpSession session;是会话范围;
           -HttpServletRequest request;是请求范围;
         12.2. 三个范围的排序:
            application>session>request
         12.3 application完成跨会话共享数据
              session完成跨请求传递数据,但是这些请求必须在同一次会话中;
              request完成跨servlet共享数据,但是这些servlet必须在同一次请求当中【转发】
         13.使用原则:有小到大尝试,优先使用小范围
                       例如:登陆成功之后,已经登陆的状态需要保存起来,可以将登陆成功的这个状态保存到session当中
         14.HttpServletRequest中的方法:
            -HttpSession session=request.getSession(); //获取当前的session,获取不到
                          则创建session ;
             -HttpSession session=request.getSession(true);   
             -HttpSession session=request.getSession(flase);
             //获取当前的session,获取不到   则返回null ;                      
            -HttpSession session=request.getSession(Boolean create);          
             
              
              
           
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值