博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cookie和Session的关系(个人理解)
阅读量:6202 次
发布时间:2019-06-21

本文共 1232 字,大约阅读时间需要 4 分钟。

之前,总是使用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过滤器来实现,在这里只为了说明问题。

转载于:https://www.cnblogs.com/hainange/archive/2013/05/01/6153639.html

你可能感兴趣的文章
给大家分享一下我经历的Unix C面试题
查看>>
strcpy实现方式之一
查看>>
提取Launcher中的WorkSapce,可以左右滑动切换屏幕页面的类
查看>>
MongoDB-linux-2.4.10-X86_64(centos/linux下安装,启动服务脚本)
查看>>
shell脚本 rman备份
查看>>
判断文本文件字符集编码
查看>>
【AD】里面如何查看上一次【委派控制】的操作记录?
查看>>
2. Rust的三板斧 安全,迅速,并发
查看>>
不同网段数据转发过程
查看>>
Linux教程-使用truss、strace或ltrace诊断软件
查看>>
java-第十三章-类的无参方法(一)-根据三角形的三条边长,判断是直角,锐角还是钝角三角形...
查看>>
浅入浅出Android(000):Hello Android
查看>>
MYSQL 数据库导入导出命令
查看>>
利用组策略部署软件全攻略之一
查看>>
PHP学习之旅(一)
查看>>
linux系统内核参数说明
查看>>
check_postgres脚本集
查看>>
网站编辑要失业了!
查看>>
magento清空产品和分类数据
查看>>
我理解的--java适配器模式
查看>>