作为一名JavaWeb学习的菜鸟,我今天通过网上的视频教程,自己学习了一下Cookie。之前一直有听到别人讨论什么Cookie啊session啊,感觉特高科,今天终于找到学习资源啦~在此将我的学习成果贴出,如果有任何建议,欢迎来喷哦~共同学习,共同进步啊~~(在此就不说是哪家的视频了,以免有打广告的嫌疑,如果有兴趣,可以私信我哦~)
好了,言归正传,一起就是我今天的学习成果啦:
Cookie的基本概念:
Cookie是Servlet里的一种用来会话跟踪的机制,简单直白的说就是比如当你网购时要将淘到的宝贝放入购物车吧,那怎么保证是加入的你的购物车呢,这里就是用Cookie来记录的;或者当你登录某个网站时,该网站一般会询问你是否记住密码,如果你选择是,那接下来一天或几天的时间你都可以实现自动登录,而这也是用的Cookie技术。
在不进行设置的情况下,Cookie的生命周期一般就是一次会话(就是你下一次访问这个网站他将可以直接登录)。而若是想要控制它的生命周期也是非常简单的,只用改变一个参数:setMaxAge既可。setMaxAge是用秒为单位的,当其为负数时就是不对Cookie存储,为0时就是立即删除,若为正数就是到时间自动删除啦。可能现在有点晕啦,概念就是这样,比较纠结,下面我用一段代码来帮助一下理解啦~
一个Cookie的测试文件:
<span style="font-size:18px;"><%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" session="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cookie Test</title>
</head>
<body>
<%
//Cookie的查看方式为遍历
Cookie [] cookies = request.getCookies();
if(cookies != null && cookies.length > 0)
{
for(Cookie c : cookies)
{
out.println(c.getName() +" : "+ c.getValue());
}
}else
{
out.println("Cookies 为空,正在创建中。。。。");
//创建一个Cookie对象
Cookie cookie = new Cookie("name", "CookieTest");
//设置Cookie的最大保存时间,Cookie会在下次启动30秒后自动删除
cookie.setMaxAge(30);
//把Cookie传给客户端
response.addCookie(cookie);
}
%>
</body>
</html></span>
我们可以从浏览器中的开发者工具中查看到如下:
第一次访问
第二次访问
当第一次访问时,响应头部有set-Cookie,而第二次访问时请求头部直接自动将Cookie的信息带入了请求,而这也就是Cookie的工作原理啦~因为设置了最大保存时间,所以30s后再刷新Cookie 就被删除了~~
至此,Cookie的基本概念就差不多讲完了~