Cookie学习总结-Cookie的增加、删除、查看案例

1.什么是Cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

2.Cookie细节
一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。
浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cooCkie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
注意,删除cookie时,path必须一致,否则不会删除

3.Cookie的增加、删除、查看案例

1.新建index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->

  </head>

  <body>
        <div>
          <a href="./ck.do?oper=add">添加cookie</a>
          <a href="./ck.do?oper=delete">删除cookie</a>
          <a href="./ck.do?oper=select">查看cookie</a>
        </div>
  </body>
</html>

2.新建CookieDemoServlet.java(/ck.do)

package blank.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieDemoServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String oper = request.getParameter("oper");
        if ("add".equals(oper)) {
            // 创建cookie对象
            Cookie cookieName = new Cookie("ckname", "leo");
            //cookieName.setDomain("www.csdn.net");
            Cookie cookiePass = new Cookie("ckpass", "leo");
            cookiePass.setPath("/web_9/servlet/");//设置有效的路径
            //注意:项目名称/路径
            // 响应过来
            response.addCookie(cookiePass);
            response.addCookie(cookieName);

            request.getRequestDispatcher("./index.jsp").forward(request,
                    response);
        } else if ("delete".equals(oper)) {
            //删除cookie原理
            Cookie cookiePass = new Cookie("ckpass", null);
            //创建的cookie的有效路径
            cookiePass.setPath("/web_9/servlet/");//设置有效的路径
            cookiePass.setMaxAge(0);//立马删除 //-1指浏览器退出再删除
            //响应过去
            response.addCookie(cookiePass);

            request.getRequestDispatcher("./index.jsp").forward(request,
                    response);
        } else if ("select".equals(oper)) {
            // 获取所有的cookie信息
            Cookie cookies[] = request.getCookies();
            if (cookies != null) {
                for (Cookie ck : cookies) {
                    System.out.println(ck.getName());
                    System.out.println(ck.getValue());
                }
            }

            request.getRequestDispatcher("./index.jsp").forward(request,
                    response);
        }
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }

}

3.运行效果
http://localhost:8080/web_9/index.jsp进入index.jsp

点击添加cookie

这里写图片描述
此时浏览器只是响应到了ckpass=leo,ckname=leo,并没有出现在请求头信息的cookie中。

点击查看cookie
这里写图片描述
此时ckname出现,但是ckpass没出现,因为servlet设置了ckpass的有效路径“cookiePass.setPath(“/web_9/servlet/”)”。所以要输入http://localhost:8080/web_9/servlet/DemoServlet(DemoServlet是新建的一个空的servlet,直接输入http://localhost:8080/web_9/servlet也能得出效果)
这里写图片描述
ckpass、ckname都查到了。

点击删除cookie
再转到http://localhost:8080/web_9/servlet/DemoServlet可发现ckpass已被删除(本案例测试的是删除ckpass)
这里写图片描述

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

转载于:https://my.oschina.net/u/2411130/blog/477356

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值