Cooike是客户端的技术,默认情况下存放在浏览器的内存中,浏览器关闭后,Cookie消失,但是也可以使用setMaxAge(int 秒)的方法修改其存活时间,此时Cookie存放在硬盘上。
Session是服务器端的技术,当有一个客户端访问服务器时,服务器为这个客户端创建一个session对象,此对象存放在服务器上,默认存活时间为30分钟。注意:Session在第一次请求相应时才产生。
两者的关系:当服务器为客户端创建session对象后,对象有一个sessionID,这个id自动记录在cookie中,保存在客户端,当客户端再次访问服务器是,将会带着cookie访问,服务器先查看cookie中保存的sessionID,以辨别服务器上是否已存在该session对象,如果有,继续使用这个对象。默认情况下浏览器关闭,cookie跟着消失,客户端再次访问服务器时,服务器就不会提供原来的那个session对象,它会生成一个新的session对象以供使用。如果设置cookie的保存时间,那么cookie将保存在硬盘上,那么即使浏览器关闭再重开,依然可以通过cookie取得原来的session对象。这里有一种情况是,浏览器被设置为禁止使用cookie,这种情况下,客户端访问服务器时就无法使用原来的session对象了,解决方案是,通过URL重写的方法来代替cookie行使传递sessionID的功能,以获得原来的session对象。URL重写的方法是:
1 重定向的情况使用encodeRederictURL(String URL) 2 请求转发的情况使用encodeURL(String URL)。这样,sessionID就可以通过URL地址传递给服务器。但是cookie优先于URL重写。 |