您的位置:首页 > 编程语言 > Java开发

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

2015-07-11 00:00 246 查看
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)



版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaweb cookie