Servlet Cookie操作(添加,修改,读取,删除)

Cookie是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。Cookie通过客户端http协议传输放到request里面,那么可以从Servlet request拿到当初存放在里面的cookies。

添加Cookie

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
    response.setContentType("text/html;charset=utf-8");
    String id = UUID.randomUUID().toString(); //生成一个随机字符串
    Cookie cookie = new Cookie("id", id); //创建Cookie对象,指定名字和值
    response.addCookie(cookie); //在响应中添加Cookie对象
    response.getWriter().print("已经给你发送了ID");
}

修改Cookie

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    // 所有的 cookie
    Cookie[] cookies = request.getCookies();
    // 遍历所有的 Cookie 寻找 用户帐号信息与登录次数信息
    for (int i = 0; cookies != null && i < cookies.length; i++) {
        Cookie cookie = cookies[i];
        if ("visitTimes".equals(cookie.getName())) {
            visitTimes = Integer.parseInt(cookie.getValue());
            cookie.setValue("" + ++visitTimes);
        }
    }
    // 修改 Cookie,更新用户的访问次数
    Cookie visitTimesCookie = new Cookie("visitTimes", Integer.toString(visitTimes));
    response.addCookie(visitTimesCookie);
}

读取Cookie

//读取所有cookies
package com.oliver.learn;
import javax.servlet.http. * ;
import java.io. * ;
public class GetCookie1 extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) {
        try {
            res.setContentType("text/html;charset=gbk");
            PrintWriter pw = res.getWriter();
            //从客户端获取cookie信息
            Cookie[] allcookie = req.getCookies();
            int i = 0;
            //如果cookie不为空。。。
            if (allcookie != null) {
                //从中取出cookie
                for (i = 0; i < allcookie.length; i++) {
                    //依次取出
                    Cookie temp = allcookie[i];
                    //判断一下
                    if (temp.getName().equals("color")) {
                        String val = temp.getValue();
                        pw.println(val);
                        break;
                    }
                }
                if (allcookie.length == i) {
                    pw.println("cookie过期");
                }
            } else {
                pw.println("cookie已经过期或者不存在color这个cookie!");
            }

        } catch(IOException e) {

            e.printStackTrace();
        }
    }
}

删除Cookie

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
    Cookie c = new Cookie("name", "hhh");
    c.setMaxAge(0); //另有效时间为0则系统会自动删除过期的cookie
    response.addCookie(c);
}

总结

1. Cookie操作一般用于在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。 

2. 一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB,因此在操作的时候应该避免生成过多的Cookie。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。