开发工具与关键技术:java
作者:张俊辉
撰写时间:2019年06月18日
-
Cookie一般使用在登录的记住我选项,要实现选中并登录成功后新增Cookie,取消选中后登录成功删除Cookie,登录页面初始化时删除Cookie。
-
添加Cookie:
-
首先需要创建Cookie对象,调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串,例如:
Cookie userNumC = new Cookie("userName", userNum); Cookie passwordC = new Cookie("password", password); Cookie rememberC = new Cookie("remember", "checked");
-
然后设置有效期,调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了7天:
userNumC.setMaxAge(7 * 24 * 60 * 60); passwordC.setMaxAge(7 * 24 * 60 * 60); rememberC.setMaxAge(7 * 24 * 60 * 60);
-
将cookie发送至HTTP响应头中,调用response.addCookie()函数来向HTTP响应头中添加cookies:
response.addCookie(userNumC); response.addCookie(passwordC); response.addCookie(rememberC);
-
删除Cookie:
a) 首先需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组, 然后遍历这个数组,并存储到Cookie对象中:Cookie[] cookies = request.getCookies(); Cookie cookie=null; if (cookies != null) { for (int i = 0; i < cookies.length; i++) { cookie = cookies[i]; } }
b) 然后将Cookie的有效期设置为0:
cookie.setMaxAge(0);
c) 将这个cookie重新添加进响应头中。
response.addCookie(cookie);
完整代码如下:
Cookie[] cookies = request.getCookies(); Cookie cookie=null; if (cookies != null) { for (int i = 0; i < cookies.length; i++) { cookie = cookies[i]; String cookieName= cookie.getName(); if("userName".equals(cookieName)){ cookie.setMaxAge(0); response.addCookie(cookie); } if("password".equals(cookieName)){ cookie.setMaxAge(0); response.addCookie(cookie); } if("remember".equals(cookieName)){ cookie.setMaxAge(0); response.addCookie(cookie); } } }
-
读取Cookie:
调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组,然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个cookie的名称和值,通关cookie的名称确定需要返回的cookie值,然后使用request.setAttribute()向前台传值,代码如下:Cookie[] cookies = request.getCookies(); Cookie cookie=null; if (cookies != null) { for (int i = 0; i < cookies.length; i++) { cookie = cookies[i]; String cookieName= cookie.getName(); if("userName".equals(cookieName)){ request.setAttribute("userNum", cookie.getValue()); } if("password".equals(cookieName)){ request.setAttribute("password", cookie.getValue()); } if("remember".equals(cookieName)){ request.setAttribute("remember", cookie.getValue()); } } } request.getRequestDispatcher("../index.jsp").forward(request, response);
页面获取值只需要使用${userNum}即可,例如:
<input type="text" name="UserNum" lay-verify="usernum" placeholder="请输入帐号" autocomplete="off" class="layui-input" value="${userNum}">