最大众的说法:session是服务端的,cookies是客户端的。默认情况下session将sessionId放入cookies返回给浏览器,使其下次请求时带回,此外还可以通过url传递sessionId,参数名为:jsessionid
进一步的理解:
1、cookie禁用时,带回的sessionId无法再传递给服务器,此时可以通过在url中带回,源码支持(setRequestedSessionURL)
2、服务器端有Cookie类和HttpSession接口,也就是说,其实cookie是服务器端创建的并带回给客户端的,是服务器放在客户端的一小部分文本,当然,客户端也可以操作这个cookies,操作过的cookie会被带回给服务器,这样在服务器和客户端之间来回传递,其实现依赖于http头部
进一步学习:
可以通过学习tomcat源码来加深对二者的理解,如下载apache-tomcat-6.0.18-src.zip这样的源码包