老师,以下是我对cookie和session的理解,麻烦老师看一下对不对,或者还有没有总结不到位的地方。
cookie是由服务器端创建(new Cookie()),存储在客户端浏览器上的文件,用来跟踪客户端和服务器之间的会话,cookie的安全性能较低,并且存储的最大数据不能超过4k。
不支持跨一级域名访问,但是可以跨二级域名访问。
分为状态cookie和持久化cookie,
状态cookie会在用户关闭浏览器时自动销毁。
持久化cookie存储在用户硬盘中,设置的失效时间,到达时间后,系统会自动删除该文件,导致持久化cookie失效。
session时在服务器创建并存储在服务器上的,创建时间取决于我们什么时候调用getSession()或getSession(true)方法。安全性能较高。
原则上session的存储大小不受限制,但是因为会占用服务器内存,如果session数量级过大,对服务器性能有影响。
session的销毁形式有两种,调用invalidate()方法和设置失效时间,
cookie和session的关系:session对象创建后,会生成一个sessionID放到cookie中,客户端每次向服务器端发出请求时,会把所有的请求信息和sessionID放到cookies中发送到服务器端,服务器端通过解析cookie对象,如果包含sessionID,服务器端会将和sessionID向对应的session取出。如果没有对应的session ID,服务器端会重新创建一个session对象。因为cookie记录着sessionID,如果cookie被销毁,服务器端对应的session将失效。因为cookie中的sessioID被销毁,客户端下次请求时就不再是之前的sessionID,而服务器端存储的仍然是之前的sessionID及session信息,所以无法找到相对应的session文件。