在早期的互联网中,由于HTTP协议时无状态的,所谓无状态是指在不同的请求,不同的操作时相互独立的,不存在任何的关系,HTTP不会为你存储任何的请求信息。虽然可以通过隐藏域来实现,但是非常的麻烦,而且它只仅限于同一张网页。互联网的先驱Netscape(网景)为HTTP协议增加了一个简单又非常有用的特征--小甜饼(cookie)。
那什么是cookie呢?当客户端向服务端发送请求后,服务端对客户端发送过来的信息进行处理时,就会产生cookie,这是里面服务端就会有两段信息,一部分是客户端传过来的信息,还有一段是服务器处理过的信息,cookie会将其中的一段保存起来。然后通过包头返回客户端保存在客户端PC机器上。这就是cookie的生成。
在提到cookie的同时大家必然会想到session,session与cookie其实目的是一样的,不过在不同的场合选择也是不一样的,它们各有自己的优缺点。
session将客户的信息保存在内存中,保存格式,就像一张字典表,它有sessionID,而sessionID会存在客户端就像cookie一样,如果下次客户登陆,http会将sessionID与服务器内存中的sessionID进行匹配,来判断用户是否存在。sessions因为存在了内存中所以说相对cookie安全了些,因为cookie是将客户信息保存在了客户端,不过如果一旦要求存储相对多的用户信息,那它将大大增加服务器的压力,可能会导致服务器的崩溃,后果不堪设想。而cookie虽然说安全性低了一点,但是它减轻服务器的压力,再说一般人也不会通过cookie来盗取别人的什么用户,密码什么的。所以现在90%的网站是在使用cookie技术。
那有人想我就是要让客户的信息相对的安全,我就是要使用session,其实着也是能够实现的。因为session不仅仅只能存在内存中,它还可以存在数据库中,你的剩余硬盘空间有多大就可以存多少。cookie保存默认30分钟,可以根据情况自定,最长可存50年吧,好像。
当然除了cookie,会话状态session,还有一些其他的状态管理,Application还有像cache都可以实现出差不多的功能,不过这两个都是全局的。比如说cache最好是用来保存一定时间内相对稳定的数据,一般是公共信息,因为会覆盖,所以说一般如果是需要登录访问,我就觉得没有必要用它们。
上述综合几位老师所述,本人总结,仅供菜鸟参考,不保对哦,呵呵。