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

Cookie学习总结-Cookie的增加、删除、查看案例_第1张图片
此时浏览器只是响应到了ckpass=leo,ckname=leo,并没有出现在请求头信息的cookie中。

点击查看cookie
Cookie学习总结-Cookie的增加、删除、查看案例_第2张图片
此时ckname出现,但是ckpass没出现,因为servlet设置了ckpass的有效路径“cookiePass.setPath(“/web_9/servlet/”)”。所以要输入http://localhost:8080/web_9/servlet/DemoServlet(DemoServlet是新建的一个空的servlet,直接输入http://localhost:8080/web_9/servlet也能得出效果)
Cookie学习总结-Cookie的增加、删除、查看案例_第3张图片
ckpass、ckname都查到了。

点击删除cookie
再转到http://localhost:8080/web_9/servlet/DemoServlet可发现ckpass已被删除(本案例测试的是删除ckpass)
Cookie学习总结-Cookie的增加、删除、查看案例_第4张图片

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

你可能感兴趣的:(javaweb,cookie)