博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java cookie操作实现免登陆
阅读量:7100 次
发布时间:2019-06-28

本文共 3079 字,大约阅读时间需要 10 分钟。

hot3.png

创建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是否过期。

参考

转载于:https://my.oschina.net/changgx/blog/801337

你可能感兴趣的文章
探讨跨域请求资源的几种方式
查看>>
Mysql 知识(3)
查看>>
万网云解析设置二级域名解析到同IP不同端口
查看>>
CSS浏览器兼容问题
查看>>
Gitlab_ansible_jenkins三剑客⑥Jenkins和ansible集成
查看>>
我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)
查看>>
通过哪些方式可以降低网站的跳出率
查看>>
node.js结合mongodb
查看>>
Leetcode题目:Remove Duplicates from Sorted List
查看>>
Python基础之Python解释器
查看>>
[Java小程序]聊天室——Socket和ServerSocket的使用
查看>>
metamask源码学习-inpage.js
查看>>
《冷眼看IT》读书笔记--IT将成为服务行业
查看>>
iOS开发-面试总结(十七)
查看>>
改变注释字体颜色
查看>>
indexOf()、lastIndexOf()
查看>>
HDU2044 一只小蜜蜂...
查看>>
POJ2780 Linearity
查看>>
解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
查看>>
Vue打包npm run build 打包后空白怎么解决?
查看>>