Session讲解

本文详细探讨了HTTP Session的工作机制,包括客户端如何通过sessionID访问服务器存储的信息,以及服务器如何处理session的创建、读取、清除。示例代码展示了在Java Web环境中操作session的过程,如设置键值对、打印session内容和删除特定键值。此外,还提到了session的自动过期机制,每分钟会自动清除,导致客户端再次请求时得到新的session。
摘要由CSDN通过智能技术生成

Session指客户端在向服务器访问时,保存在服务器中的信息。

实现的效果:
客户端在向服务器访问时,服务器会给客户端一个sessionID,然后对应的session内容会存储在服务器中。 客户端可以判断自己是否有sessionID,然后可以根据sessionID访问服务器中的内容。

具体的程序介绍:

当客户端在向服务器发出请求时,服务器会给客户端返回一个sessionID。所以在执行SessionDemo01时:
在这里插入图片描述

这里有个疑问:存在cookie中的sessionID是不是就是服务器端存储session数据的内存地址。
这样的话上图中的程序

HttpSession session = req.getSession();
即是从请求端req获得的是服务器中session数据的内存地址,然后服务器就可以拿去用了。
这只是我的猜想!!!

直接输出:
在这里插入图片描述
然后在session中存放了信息,一个键值对。key=“name”,value=Person对象。
在这里插入图片描述
在第二段程序中,将存储的session在控制台打印出来。当然,如果session为空的话,会抛出NullPointerException。
在这里插入图片描述
第三段程序:手动清除session.将key="name"的session清除掉
在这里插入图片描述
先访问SessionDemo03,session会被清除,此时再访问SessionDemo02,会出现:
在这里插入图片描述
但此时服务器仍会给客户端返回一个session。即先报出异常,因为该session被清除掉了,但在返回异常的时候,服务器还会给客户端一个session。
此时再运行SessionDemo01,显示:
在这里插入图片描述
第二种情况:先SessionDemo03再SessionDemo01
在这里插入图片描述
因为此时的session是新的。
刷新一下,又会变成:
在这里插入图片描述

注意观察的话,刷新后的session改变了,但其实对于同一个客户端,它是不应该变的。
改变的原因是对session进行了一个自动清除的操作:
在这里插入图片描述
每过一分钟,session就会自动的被清除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值