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中。

  • 相关阅读:
    安装cifs 访问windows的共享文件
    创建swap文件
    linxu 网路的一些命令
    database mysql
    __alloc_pages
    firefox tips
    关于文件的BOM头
    java实现跳表
    java中如何优雅的停止一个线程
    java中Thread启动流程分析
  • 原文地址:https://www.cnblogs.com/Alpharun/p/9231384.html
Copyright © 2011-2022 走看看