1setMaxAge(
int
seconds)
该方法用于设置cookie的有效时间,传入的参数表示有效时间(秒),是int型的秒数值
seconds参数详解
(1) seconds<0
1 | cookie.setMaxAge(- 1 ); |
设置负数的秒值,等同于--添加cookie时没有调用该方法,则浏览器默认将cookie保存在内存里,当浏览器关闭时,cookie从内存中释放(没有了)。
注:这种情况下,只要浏览器不关,cookie就会一直存在
(2) seconds=0
1 | cookie.setMaxAge( 0 ); |
这种设置用于删除同名的cookie,在servlet中创建一个与已存在的cookie同名的cookie,设置该cookie生存时间为0,将该cookie添加进去,将覆盖原cookie,但因该cookie生存时间为0,所以会马上消失,起到了删除特定cookie的作用。
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package web; ...... public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType( "text/html;charset=utf-8" ); PrintWriter out = response.getWriter(); // 创建一个叫"siki"的cookie Cookie c0 = new Cookie( "siki" , "ds" ); // 又创建一个叫"siki"的cookie,她将覆盖上面的cookie Cookie c = new Cookie( "siki" ,URLEncoder.encode( "式" , "utf-8" )); // 设置新"sike"的生存时间为0 c.setMaxAge( 0 ); // 创建一个名叫"hokudokomoya"的Cookie Cookie c1 = new Cookie( "hokudokomoya" ,URLEncoder.encode( "黑桐干也" , "utf-8" )); // 从响应对象将该Cookie发给浏览器(以setCookie消息头发送) response.addCookie(c); response.addCookie(c1); out.close(); } } |
操作:浏览器访问该servlet,如图,访问成功
(3) seconds>0:表示将cookie在硬盘上存放seconds秒
1 | cookie.setMaxAge( 120 ); |
该cookie将在硬盘中保存120秒,期间不管浏览器有没有关闭,该cookie都存在,但过了120秒后,该cookie将消失。