java cookie 永不过期_java cookie操作实现免登陆

创建cookie

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String username=req.getParameter("username");

String password=req.getParameter("password");

String rememberMe=req.getParameter("rememberMe");

//用户名密码正确

if("admin".endsWith(username)&&"123456".equals(password)){

//勾选remember

if(rememberMe!=null){

//创建cookie

Cookie usernameCookie=new Cookie("username",username);

Cookie passwordCookie=new Cookie("password",password);

//设置cookie存活时间,单位秒

usernameCookie.setMaxAge(3600*24*7);

passwordCookie.setMaxAge(3600*24*7);

// 将用户名和密码存放到客户端的Cookie中

resp.addCookie(usernameCookie);

resp.addCookie(passwordCookie);

}

}

}

获取cookie

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

Cookie[] cookies=req.getCookies();

String username=null;

String password=null;

if(cookies!=null){

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

String cookieName=cookies[i].getName();

String cookieValue=cookies[i].getValue();

if("username".equals(cookieName)){

username=cookieValue;

}else if("password".equals(cookieName)){

password=cookieValue;

}

}

}

}

清除cookie

Cookie usernameCookie=new Cookie("username",username);

Cookie passwordCookie=new Cookie("password",password);

//设置cookie存活时间,单位秒

usernameCookie.setMaxAge(0);

passwordCookie.setMaxAge(0);

// 将用户名和密码存放到客户端的Cookie中

resp.addCookie(usernameCookie);

resp.addCookie(passwordCookie);

cookie有效期 Cookie的maxAge决定着Cookie的有效期,单位为秒(Second)。Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。

如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效

// 新建Cookie

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

// 设置生命周期为MAX_VALUE

cookie.setMaxAge(Integer.MAX_VALUE);

// 输出到客户端

response.addCookie(cookie);

如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效。maxAge为负数的Cookie,为临时性Cookie,不会被持久化,不会被写到Cookie文件中。Cookie信息保存在浏览器内存中,因此关闭浏览器该Cookie就消失了。Cookie默认的maxAge值为-1。

如果maxAge为0,则表示删除该Cookie。Cookie机制没有提供删除Cookie的方法,因此通过设置该Cookie即时失效实现删除Cookie的效果。失效的Cookie会被浏览器从Cookie文件或者内存中删除,例如:

// 新建Cookie

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

//设置生命周期为0,不能为负数

cookie.setMaxAge(0);

// 必须执行这一句

response.addCookie(cookie);

response对象提供的Cookie操作方法只有一个添加操作add(Cookie cookie)。要想修改Cookie只能使用一个同名的Cookie来覆盖原来的Cookie,达到修改的目的。删除时只需要把maxAge修改为0即可。

注意:从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期。

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值