Cookie&Session简介

一、Cookie

  Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务 器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

Cookie的属性
  • name: Cookie的名称,一旦创建,名称就不会修改
  • value: Cookie的值,果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用Base64编码
  • maxAge: Cookie失效时间,若为正数,则该Cookie在maxAge秒后失效,若为负数,则该Cookie为临时Cookie,关闭浏览器失效.若为0,则表示删除该Cookie.默认为-1
  • secure: 该Cookie是否仅被使用安全协议传输.安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
  • path:该Cookie的使用路径。如果设置为”/web/”,则只有contextPath为”/web”的程序可以访问该Cookie。如果设置为”/”,则本域名下的contextPath都可以访问该Cookie。最后一个字符必须为”/”
  • domain:可以访问该Cookie的域名。如果设置为”.google.com”,则所有以”google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为”.”
  • comment:说明作用览器显示Cookie信息的时候显示该说明
  • version:该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范

二、Session

  Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session,在Session生成的同时,服务端会同时生成一个JSESSIONID的给客户端,客户端浏览器再次访问时只需携带JSESSIONID(Cookie形式或URL地址重写),就能找到对应的Session并从中查找该客户的状态。
  Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session,为防止大量用户访问导致内存溢出,Session里的信息应该尽量精简。
  注意:服务端自动生成的Cookie(JSESSIONID)的maxAge一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效

Session的生命周期

  Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session。

Session的有效期

  Session的超时时间为maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,通过setMaxInactiveInterval(longinterval)修改。Session的超时时间也可以在web.xml中修改。另外,通过调用Session的invalidate()方法可以使Session失效。

 <!--Web.xml中设置session失效时间(10分钟失效/默认30分钟)-->
<session-config>
    <session-timeout>10</session-timeout>
</session-config>

  每次用户访问,无论是否读写Session,服务器都会更新Session的最后访问时间,当Session最后访问时间超过了设置的超时时间,那么session就会自动失效。
  注意:网上说设置session-timeout为0或负数让session永久保持有效,是否真能起作用不清楚,最稳妥的方式还是隔断时间发一次请求,激活session

参考博客:https://www.cnblogs.com/linguoguo/p/5106618.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值