• Session


    Web服务器跟踪客户状态通常有四种方法:

      1,建立含有跟踪数据的隐藏字段  type=hidden

      2,重写包含额外参数的URL

      3,使用持续的Cookie

      4,使用Servlet API中的Session(会话)机制

    Session概念:

      Session用于跟踪客户的状态,Session是指在一段时间内,单个客户与WEB服务器一连串相关的交互过程。在一个Session中,客户可能多次请求访问同一个网页,也有可能请求访问各种不同的服务器资源。

    Session运行机制:

      当一个Session开始时,Servlet容器将创建一个HttpSession对象,在HttpSession对象中可以存放客户的状态信息(例如购物车)。

      Servlet容器为HttpSession分配一个唯一标志符,称为SessionID。Servlet容器将SessionID作为Cookie保存在客户的浏览器中。

      每次客户发送Http请求时,Servlet容器可以从HttpServletRequest对象中读取SessionID,然后根据SessionID找到对应的HttpSession对象,从而获取客户的状态信息。

    Session的接口HttpSession:

      getId()   返回session的ID

      Invalidate()  让当前session失效,Servlet容器会释放HttpSession对象占用的资源

      getAttribut()     setAttribute()

          isNew()  判断是否是新创建的session,如果是返回true 否则返回false

      setMaxInactiveInterval()  设置session的最大有效时间 单位为秒 如果设置为负数,表示不限制session处于不活动状态的最大有效时间,默认的设置时间为30分钟

    Session的生命周期:

      当客户第一次访问WEB应用中支持Session的某个页面时,就会开始一个新的session

      接下来客户访问这个WEB应用中不同的网页时,都处于同一个session中

      默认情况下,JSP页面是支持Session的,如果想不支持Session,可使用标签<%@ page session="false"%>

      在下列情况下,Session将结束生命周期,Servlet容器将释放HttpSession占用的资源:

        1,客户浏览器关闭?

        2,Session过期

        3,服务器端调用了HttpSession的Invalidate()方法

      如何做到在浏览器关闭时删除Session?

        严格的讲,做不到这一点。可以做的努力的办法是在所有的客户端页面里使用javascript的方法window.onclose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除Session;

        但是对于浏览器崩溃或强行杀死进程这种非常规手段仍然无能为力。

        实际上我们在项目中也不会这么做,而是让服务器在Session过期时将其删除。

      

  • 相关阅读:
    ACM-ICPC SouthWestern Europe Regional Contest 2017题解
    Ubuntu系统Anaconda下载安装与切换源教程
    HZNUOJ开发者学习计划
    Codeforces Round #473 (Div. 2)
    正方教务系统自动评教代码
    QQ空间自动点赞
    妈妈我要当全栈工程师
    基于Koa开发学生导师管理系统
    SSH框架实现登陆界面
    谈ACM生涯总结的经验
  • 原文地址:https://www.cnblogs.com/cuiliang/p/2221177.html
Copyright © 2020-2023  润新知