不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2021-06-13 17:48:00  修改时间:2023-02-01 17:21:55  分类:Java框架/系统  编辑
setMaxAge(int seconds)

该方法用于设置cookie的有效时间,传入的参数表示有效时间(秒),是int型的秒数值

seconds参数详解

(1) seconds<0

cookie.setMaxAge(-1);

设置负数的秒值,等同于--添加cookie时没有调用该方法,则浏览器默认将cookie保存在内存里,当浏览器关闭时,cookie从内存中释放(没有了)。

注:这种情况下,只要浏览器不关,cookie就会一直存在

(2) seconds=0

cookie.setMaxAge(0);

这种设置用于删除同名的cookie,在servlet中创建一个与已存在的cookie同名的cookie,设置该cookie生存时间为0,将该cookie添加进去,将覆盖原cookie,但因该cookie生存时间为0,所以会马上消失,起到了删除特定cookie的作用。

举例:

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秒

cookie.setMaxAge(120);

该cookie将在硬盘中保存120秒,期间不管浏览器有没有关闭,该cookie都存在,但过了120秒后,该cookie将消失。