zoukankan      html  css  js  c++  java
  • Cookie和Session的关系(个人理解)

    之前,总是使用SessionCookie接触的比较少,通过这次的项目,使我了解了,这两者的关系与用法。首先先简单聊几句两者的概念:

    Session是客户端与服务器的会话,session是存储在服务器端的。通常用户登录之后,用户信息存储在session之中。Session在服务器中是有生命周期的。可以在web.xml中进行配置。默认应该是30分钟。

    Cookie是存储在客户端之中的。Cookie存储的是sessionID

    下面我通过一个实例,来介绍一下这两者。一个用户登录的例子,虽然例子很简单,但是能真正做好的,还真不容易。

    首先服务器启动,通过index.jsp会默认跳转到ProfileSvl.java中,这个类作为系统的入口,主要作用是验证用户是否登录过。希望达到一个效果,第一次登录,是登录页面。登录过之后在规定时间之内再登陆,跳过登录页面,直接到主页。

    ProfileSvl.java中主要语句如下:

        if(request.getSession().getAttribute("user") != null)

        {

    request.getRequestDispatcher("productSvl").

    forward(request, response);

        }

        else

           request.getRequestDispatcher("login.jsp").

    forward(request, response);

    对这个部分解释一下:因为用户访问服务器就会生成一个session并且生成一个SessionID,返回给客户端。客户端的Cookie会自动的记录SessionID。下一次如果客户端与服务器再次建立连接,客户端会Cookie携带SessionID访问服务器。这个时候,就可以通过request.getSession().getAttribute("user")这个方法来判断服务器中这个session是否保存了user这个信息。因为如果第一次登录之后,会在服务器中session部分,建立user映射。

    注意:下面这段话是我个人理解和总结的,没有得到理论认证,我先写出来,如果有高手发现错误,请批评指正。每一个Cookie里面都隐藏了一个SessionIDCookie创建的时候:

    Cookie cookie=new Cookie("str","");

    Cookie cookie1=new Cookie("str","sss");

    可以创建很多str同名的cookie,但是要求cookie中的sessionID必须是不同的,如果是包含同一个SessionIDcookie,那么如果名字相同,那么cookie会进行覆盖。

    PS:这个部分可以通过filter过滤器来实现,在这里只为了说明问题。

  • 相关阅读:
    超棒的监控工具 DataDog Splunk 日志易
    API 接口设计 原则
    程序员 架构师 成长 设计 原则
    OAM 继续演进:阿里云携手微软与 Crossplane 社区发布 OAM Kubernetes 标准实现与核心依赖库
    首席架构师 码农总结 互联网整体解决方案
    《不抱怨的世界2》 读后感
    适合开发者的最佳Linux发行版
    大数据 消息 日志
    CRM 线索来源 获客方式
    微服务开发过程中需要注意的若干事项_逍遥子曰
  • 原文地址:https://www.cnblogs.com/hainange/p/6153639.html
Copyright © 2011-2022 走看看