Java-Cookie的增删读

本文介绍了Java开发中Cookie的使用,主要用于登录的记住我选项。详细说明了添加Cookie的步骤,包括创建对象、设置有效期并发送至响应头;还阐述了删除和读取Cookie的方法,最后给出了完整代码示例,页面可通过特定方式获取值。

开发工具与关键技术:java
作者:张俊辉
撰写时间:2019年06月18日

  • Cookie一般使用在登录的记住我选项,要实现选中并登录成功后新增Cookie,取消选中后登录成功删除Cookie,登录页面初始化时删除Cookie。

  • 添加Cookie:

  1. 首先需要创建Cookie对象,调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串,例如:

    Cookie userNumC = new Cookie("userName", userNum);
    Cookie passwordC = new Cookie("password", password);
    Cookie rememberC = new Cookie("remember", "checked");
    
  2. 然后设置有效期,调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了7天:

    userNumC.setMaxAge(7 * 24 * 60 * 60);
    passwordC.setMaxAge(7 * 24 * 60 * 60);
    rememberC.setMaxAge(7 * 24 * 60 * 60);
    
  3. 将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}">
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值