简介:
例子:
客户端:张三、服务器:小卖部、Cookie:纸条
张三来小卖部买了一包泡面(请求了一次),此时小卖部就拿纸条记录了张三的信息 -- 姓名:张三、买了一包泡面,然后把写有信息的纸条给了张三,下次张三来小卖部的时候就带着纸条,小卖部的一看纸条就知道来的人的张三,并且上次还买过一包泡面。
这就是Cookie的作用。
***Cookie是不能跨浏览器的!
Javaweb中使用cookie
*原始方式(了解):
>使用response发送set-cookie响应头
>使用request获取cookie请求头
便捷方式(精通):
>使用repsonse.addCookie ()方法向浏览器保存cookie
>使用request.getcookies ()方法获取浏览器归还的cooke
代码实现:
使用JSP保存Cookie再获取:
a.jsp:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
<h1>保存Cookie!!!</h1>
<%
Cookie c1 = new Cookie("aaa","AAA");
Cookie c2 = new Cookie("bbb","BBB");
response.addCookie(c1);
response.addCookie(c2);
%>
</body>
</html>
b.jsp:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
<!--JSP九大域:request、response、session、 application、 pageContext、config、 out、 page、exception -->
<h1> -------- 获取Cookie ----------</h1>
<%
Cookie[] cs = request.getCookies();
if(cs != null){
for (Cookie c : cs){
out.print(c.getName() + ":" + c.getValue() + "<br/>");
}
}
%>
</body>
</html>
启动服务器 -- 访问a.jsp -- F12查看:
可以发现,设置的Cookie已经保存到了浏览器中
访问b.jsp:
显示了请求页面此时存储的所有的Cookie。
此时请求的Cookie只有一个头部,没有前面的set-Cookie。
Cookie的setMaxAge(maxAge)方法:
设置Cookie的存活时间:
maxAge < 0 : 只能在浏览器中存活,随浏览器的关闭而消失
maxAge = 0 : 马上删除
maxAge > 0 : 保存在客户机的硬盘上,有效时长由maxAge的值决定
验证:
访问a.jsp,浏览器会保存三个Cookie
当我们退出浏览器所有页面时,再次打开浏览器就会发现Cookie消失了。
现在来设置 maxAge:
将c1的maxAge设置为10:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
<h1>保存Cookie!!!</h1>
<%
Cookie c1 = new Cookie("aaa","AAA");
c1.setMaxAge(10);
Cookie c2 = new Cookie("bbb","BBB");
response.addCookie(c1);
response.addCookie(c2);
%>
</body>
</html>
再次访问a.jsp然后查看Cookie:
发现有个到期时间延迟了10秒。
删除Cookie:
在b.jsp中设置maxAge为0:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
<!--JSP九大域:request、response、session、 application、 pageContext、config、 out、 page、exception -->
<h1> -------- 获取Cookie ----------</h1>
<%
Cookie c1 = new Cookie("aaa","AAA");
c1.setMaxAge(0);
response.addCookie(c1);
Cookie[] cs = request.getCookies();
if(cs != null){
out.print("Cookie数组长度:" + cs.length + "<br/>");
for (Cookie c : cs){
out.print(c.getName() + ":" + c.getValue() + "<br/>");
}
}
%>
</body>
</html>
先访问a.jsp将Cookie c1设置为一天后 -- 再访问b.jsp删除Cookie c1:
Cookie c1: aaa 已经消失了。
Cookie的路径:
当前访问资源的父路径,例如:
访问a.jsp时:
Cookie的路径就是 :day0420_Cookie/cookie/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)