zoukankan      html  css  js  c++  java
  • Cookie-Session机制

    1.什么是Session

    HTTP协议本身是无状态的,浏览器的每一次请求都是独立的,浏览器不会保存过去的请求信息。服务器为了记录用户的状态就需要使用某种机制来保持会话,在Http传输中采用了Session机制。
    Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。在Servlet中,session指的是HttpSession类的对象。

     

    2.如何维持会话


    服务器创建Session后,会把Session的id号,以cookie的形式回写给浏览器,以后在访问符合cookie规则的页面时,浏览器会把这个cookie添加到请求头发送给服务器,服务器接收到这个cookie时会匹配id号找到当前浏览器的会话。 ID通常是 NAME 为 JSESIONID 的一个 Cookie。

    • HTTP和COOKIE交互:
      服务器端响应给客户端对应的Set-Cookie。包括了对应的cookie的名称,值,以及各个属性。
     

    3.Servlet中的HttpSession


    • Session创建的时间:
      一个常见的误解是以为Session在有客户端访问时就被创建,然而事实是直到某servlet端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建,JSP会默认调用,如果不打算使用session,应该在所有的JSP中关闭它。

    • Session删除的时间:

      • Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了服务器设置的Session超时的最大时间。
      • 程序调用HttpSession.invalidate()
      • 服务器关闭或服务停止
    • Session会因为浏览器的关闭而删除吗?
      不会,session只会通过上面提到的方式去关闭。

    • Session存放在哪里:
      服务器端的内存中。不过session可以通过特殊的方式做持久化管理,比如写入数据库或文件中

    • Session是一个容器,可以存放会话过程中的任何对象。

    • Session的创建和使用总在服务端,而浏览器从来都没得到过session对象。但浏览器可以请求Servlet来获取session的信息。客户端浏览器仅仅拿到的是sessionID。

     

    4.URL地址重写维持会话


    URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(Stringurl)实现URL地址重写。
    该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

  • 相关阅读:
    Two strings CodeForces
    Dasha and Photos CodeForces
    Largest Beautiful Number CodeForces
    Timetable CodeForces
    Financiers Game CodeForces
    AC日记——整理药名 openjudge 1.7 15
    AC日记——大小写字母互换 openjudge 1.7 14
    AC日记——将字符串中的小写字母换成大写字母 openjudge 1.7 13
    AC日记——加密的病历单 openjudge 1.7 12
    AC日记——潜伏着 openjudge 1.7 11
  • 原文地址:https://www.cnblogs.com/Alpharun/p/9231384.html
Copyright © 2011-2022 走看看