Cookie是什么?(Cookie的解析)

Cookie

什么是Cookie

1.Cookie是服务器通知客户端保持键值对的一种技术

2.客户端有了Cookie后,每次请求都发送给服务器

3.每个Cookie的大小不能超过4kb

cookie的创建

public void createCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //创建cookie
    Cookie cookie1 = new Cookie("key1", "value1");
    Cookie cookie2 = new Cookie("key2", "value2");
    //客户端保存cookie
    resp.addCookie(cookie1);
    resp.addCookie(cookie2);
    resp.getWriter().write("Cookie创建成功");

}

cookie的获取

public void getCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //得到cookie
    Cookie[] cookies = req.getCookies();
    //遍历cookie
    for (Cookie cookie : cookies) {
        resp.getWriter().write("得到cookie");
        resp.getWriter().write(cookie.getName()+cookie.getValue());
        resp.getWriter().write("得到cookie");

    }
    //得到特定cookie
    Cookie cookie = cookieUtils.findCookie(req.getCookies(), "key1");
    if (cookie!=null){
        resp.getWriter().write("得到特定cookie");
        resp.getWriter().write(cookie.getName());
        resp.getWriter().write("得到特定cookie");
    }


}

cookie的修改

public void updateCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //创建cookie                                    覆盖
    Cookie cookie = new Cookie("key1", "value3");
    //客户端保存cookie
    resp.addCookie(cookie);
    resp.getWriter().write(cookie.getValue());


    Cookie cookie1 = cookieUtils.findCookie(req.getCookies(), "key2");

    if (cookie1!=null){
        cookie1.setValue("value4");
        resp.addCookie(cookie1);
        resp.getWriter().write(cookie1.getValue());
    }


}

寻找特定的cookie的工具栏cookieutils

public class CookieUtils {
    public static Cookie findCookie(Cookie[] cookies ,String name){
        if (cookies==null||name==null){
            System.out.println("cookie或name为空");
            return null;
        }
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())){
                System.out.println("找到相应的cookie");
                return cookie;
            }
        }
        System.out.println("找不到对应的cookie");
        return null;
    }
}

cookie的生命控制

1.cookie的生命控制指的是如何管理cookie什么时候被销毁(删除)

2.setMaxAge();//设置cookie的最大生存时间,以秒为单位

3.正值,表示特定的秒数后过期

4.负值,表示浏览器一关,cookie就会被删除(默认值是-1)

5.零,表示马上删除cookie

public void lifeCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //创建cookie

    Cookie cookie = new Cookie("key5", "value5");
    //客户端保存cookie
    cookie.setMaxAge(-1);
    resp.addCookie(cookie);
    resp.getWriter().write("Cookie关闭浏览器被删除");

}
public void nowDeleteCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //创建cookie
    Cookie cookie1 = cookieUtils.findCookie(req.getCookies(),"key1");

    //客户端保存cookie
    cookie1.setMaxAge(0);
    resp.addCookie(cookie1);
    resp.getWriter().write("Cookie马上被删除");

}
public void FiveSecondsCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //创建cookie
    Cookie cookie1 = new Cookie("key6", "value6");
    cookie1.setMaxAge(5);
    //客户端保存cookie
    resp.addCookie(cookie1);

    resp.getWriter().write("Cookie 5秒后被删除");

}

jsp页面

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<base href="http://localhost:8080/cookie_war_exploded/">
<head>
    <meta http-equiv="pragma" content="no-cache"/>
    <meta http-equiv="cache-control" content="no-cache"/>
    <meta http-equiv="Expires" content="0"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Cookie</title>
    <style type="text/css">

        ul li {
            list-style: none;
        }

    </style>
</head>
<body>
<iframe name="target" width="500" height="500" style="float: left;"></iframe>
<div style="float: left;">
    <ul>
        <li><a href="cookieServlet?action=createCookie" target="target">Cookie的创建</a></li>
        <li><a href="cookieServlet?action=getCookie" target="target">Cookie的获取</a></li>
        <li><a href="cookieServlet?action=updateCookie" target="target">Cookie值的修改</a></li>
        <li>Cookie的存活周期</li>
        <li>
            <ul>
                <li><a href="cookieServlet?action=lifeCookie" target="target">Cookie的默认存活时间(会话)</a></li>
                <li><a href="cookieServlet?action=nowDeleteCookie" target="target">Cookie立即删除</a></li>
                <li><a href="cookieServlet?action=FiveSecondsCookie" target="target">Cookie存活5秒</a></li>
            </ul>
        </li>
        <li><a href="cookieServlet?action=pathCookie" target="target">Cookie的路径设置</a></li>
    </ul>
</div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值