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就会自动的被清除。