zoukankan      html  css  js  c++  java
  • session机制大揭秘(结合cookie)

    session运行机制

    当一个session开始时,servlet容器将创建一个httpSession对象,在HttpSession对象中可以存放客户状态信息。

    servlet容器为HttpSession分配唯一一个标识符,成为sessionID,servlet容器把session id 作为cookie保存在客户端浏览器中,每次客户发送http请求时,servlet容器可以从HTTPServletRequest对象中读取session  ID,然后根据session ID找到相应的HttpSession对象,从而获取客户的状态信息。

    理解图:

    它通过getID的方式产生一个sessionID,通过cookie的方式写入客户端,客户端再通过请求,再将该ID返回给服务器端,这样,一来一去,服务器就知道与客户端对应的session对象是什么了,所以产生服务器端多个session对象之间不会出现干扰。他们之间是相互独立的。

    HttpSession接口

    1.getID():获取session值

    2.isNew():判断是否创建新的sessin

    3.SetMaxInactiveInterval() 设置一个session可以处于不活动状态的最大时间间隔,以秒为单位,如果为负数,表不限制session处于不活动状态的时间,默认值为30分钟

    设置sessin失效时间(在xml中)

    <session-config>

      <session-timeout>10</session-timeout>

    </session-config>

    默认页面都对session支持,因为

    <%@page session="true">为默认的

    sessin生命周期

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

    接下来当客户浏览这个web应用的不同网页时,始终处于同一个session中。

    结束:在以下情况中,session将会结束生命周期,servlet容器会将session所占用的资源释放掉

    1.客户端关闭浏览器(正常关闭)

    2.sessin过期

    3.服务器端调用了HttpSession的invalidation()方法。

    严格的讲:关闭浏览器不一定删除sessin,有时候用以下几种方法可以强制关闭

    1.可以在所有页面中js的window.onclose来见识浏览器是否关闭

    但是对于浏览器崩溃或者强行杀死进程,这些非常规手段无能为力,所以在实际项目中,我们让sessin过期时,释放删除。

    sessinID对应的cookie是存在于浏览器进程上得,当浏览器关闭时,对应的进程消失,cookie也随之消失、。

    session对应的cookie是存在于浏览器进程上面的,所以我们称之为会话cookie,所以,当关闭浏览器时,客户端不会向服务器发送任何请求,也不会收到任何响应,服务器端的session依然存活着,当新开一个浏览器时,就会新开一个sessionID。

    session过期,是指当session开始后,在一段时间内,客户没有和web服务器交互,这个session会话会失效,我们可以通过HttpSession的setMaxInactiveInterval()方法设置允许session保持不活动的时间(以秒为单位)

    练习题:

    哪一个说法正确:

    A.对于每个请求访问mailLogin.jsp的Http请求,servlet容器都会创建一个HttpSession对象。

    B.每个HttpSession对象都有唯一的ID

    C.javaWeb应用程序必须负责为HttpSession分配唯一的ID

  • 相关阅读:
    BUUCTF | [极客大挑战 2019]PHP
    BUUCTF | [极客大挑战 2019]Secret File
    [网鼎杯 2018] Fakebook 复现
    [强网杯2019 随便注]总结
    [Flask(Jinja2)服务端模板注入漏洞(SSTI)]学习简记
    [Flask框架]学习简记
    ADO.NET基础
    SQL Server基础
    AdventureWorks2012下载链接
    SQL Server2012从入门到精通
  • 原文地址:https://www.cnblogs.com/feiguo/p/3802329.html
Copyright © 2011-2022 走看看