随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

简介:

例子:

客户端:张三、服务器:小卖部、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/

 

 
posted on 2022-04-20 17:07  时间完全不够用啊  阅读(588)  评论(0编辑  收藏  举报