我刚刚完成了对Web应用程序的期末考试。对于那些相当简单(虽然很长 - 12页)考试而言,这是一个问题,要求我们编写会话的实现,类似于javax.http.HttpSession所做的。
我讨厌承认,它让我难过。我使用HashMap制作了一个相当简单的BS实现,并且使用随机cookie字符串映射到服务器上的序列化HashMap做了一些疯狂,但我很确定它是假的...现在我很想知道它是如何实际的完成。
特别是作为一个广泛使用PHP的人,但无论出于何种原因从未费心去学习方便背后的魔力,我非常有兴趣了解更多关于会话的底层实现。 J2EE和PHP肯定,但任何其他语言/框架也很棒。谢谢!
答案 0 :(得分:8)
从我的理解 - 你很亲密。
根据我的理解,一个基本上是MD5“ID”的cookie保存在客户端,并通过cookie或修改后的GET传送。
在服务器端,具有匹配的sessionID的“会话”数据保存在临时文件中(在Linux上,它默认为/ tmp)。我相信的会话目录可以在PHP.ini文件中设置。
答案 1 :(得分:1)
由于它是一个接口,您可以查看在像Tomcat这样的开源Web容器中实现它的类,并亲自查看。