session 和 cookie 的区别与联系

时间:2021-01-19 01:00:04

1、创建一个新的Cookie

Cookie cookie = new Cookie("username",name);

2、设置cookie在客户端上存活多久

cookie.setMaxAge(30*60);

3、把cookie发送到客户

response.addCookie(cookie);

4、从客户请求得到cookie(或多个cookie)

Cookie[]    cookies=request.getCookies();

for(int i=0-;i<cookies.length;i++){

Cookie cookie=cookies[i];

out.println(cookie.getName()+":"+cookie.getValue())

}

为什么要有cookie和session,以及cookie和session的区别

壮态管理

当用户在发送一个请求关得到返回信息之后,客户端与服务器端之间的网络连接就已经
断开了,在下一个请求发送时,服务器无法确定这次请求和上次的请求是否来自同一个客

户端。也就是说,服务器不能记住"记住"用户,这是hptp协议的限制。在web应用程序中,

实际上是经常需要记住每次请求的。那么,如何让服务器知道不同的请求是否来自同一个

客户端,就是状态管理问题出现了session和cookie。

状态管理
分为客户端和服务器端

服务器端:状态信息保存在服务器端,session (其它:Application,HttpContext,Cache)

客户端:状态信息保存在客户端,cookie (QueryString,ViewState,ControlState,隐藏域)

当客户端向服务器发送请求时,状态信息也随之发送到服务端,从而起到验证客户端来路的目的。

客户端状态不如服务器端的安全性和可靠性高,但服务器端状态会占用服务器端资源,影

响服务器性能。

Session session超过之前    数据大小不限,建议数据尽量少

cookie 可编程控制         数据受cookie大小限制

会话cookie和持久cookie的区别

  如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。

  如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。

如何使用cookie记录各个用户的访问计数

  1.获取cookie数组中专门用于统计用户访问次数的cookie的值

  2.将值转换成int型

  3.将值加1并用原来的名称重新创建一个Cookie对象

  4.重新设置最大时效

  5.将新的cookie输出

session何时被删除

  session在下列情况下被删除:

  A.程序调用HttpSession.invalidate()

  B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间

  C.服务器进程被停止

cookie和session对象的生命周期是一样的吗

  当用户关闭了浏览器虽然session cookie已经消失,但session对象仍然保存在服务器端

关闭浏览器,只会是浏览器端内存里的session cookie消失,但不会使保存在服务器端的session对象消失,同样也不会使已经保存到硬盘上的持久化cookie消失。