cookie和session
cookie:
cookie是http协议的扩展,它是会话保持的客户端的解决方法。可以辨别用户者的身份,一般都会设置过期时间,因此也会保存在本地的硬盘中,但是没有设置过期时间的cookie会保存在内存中,关闭浏览器就会失效。一次一般也不怎么会使用cookie去维护。还有最重要的一点就是,cookie携带的数据量很小,只有4kb左右。所以,为了解决这一问题,又采用了session的来作为会话保持的服务器端的解决方法,之后会具体介绍。
对于cookie的处理方式每一种不同的浏览器的解决方案也不一样。
cookie一般包含五部分:名字,值,过期时间,路径和域。一般以key-value的形式保存。
session:
session一般存放在HashTable的数据结构中。当浏览器第一次发请求的时候,会自动生成一个session id,并且通过响应发送给浏览器。当浏览器第二次访问的时候,便会将上一次的session id带回来和服务器的session id进行比较。一般session的失效时间为30分钟,也可以设置。那是不宜太长,否则当用户的在线人数很多时,会加重服务器的压力。session id是通过cookie来携带的和识别的。
区别:
两者的携带数据量大小不一样,而且两者的携带数据的类型也不一样。session可以是任何的java对象,而cookie只能是String。
一个在客户端,一个在服务器端,session一般很安全,而cookie在客户端保存具有一定的风险。
session在服务器的保存,当用户很多的时候,会占用服务器的很多的资源,因此一般大型公司都会专门建立session服务器,来分担服务器的压力。而cookie则不会。
两者的作用域也不一样。session可以进行复用。