cookie 入门

Cookie 是保存到客户端的东西

1 当浏览器中没有cookie的时候

谷歌浏览器—右侧工具栏设置—内容设置

cookie显示的是空的浏览器随便请求一个jsp 页面,因为由于访问jsp 页面服务端这个时候,因为jsp 中含有session ,,cookie携带者sessionId 保存到客户端去(显示在客户端的响应头)

查看cookie 时也是有cookie 的,但是这个时候创建的就是会话cookie,浏览器关闭了,就没有了

 

浏览器关闭了,再打开就没有了

在浏览器关闭以后,再打开开始创建cookie

Cookie中不能存在中文!!!


// 保存
Cookie c = new Cookie("username", URLEncoder.encode("张三", "utf-8"));//出错!
response.addCookie(c);

<%@ 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 'a.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>
<h1>保存Cookie</h1>
<%-- request、response、session、application、pageContext、config、out、page、exception --%>
<%
	Cookie cookie1 = new Cookie("ggg", "hhhh");
	response.addCookie(cookie1);
	
	Cookie cookie2 = new Cookie("jjj", "kkkk");
	response.addCookie(cookie2);
%>
  </body>
</html>
 

新创建的cookie 仍然放在响应端

这个说明了,cookie 是保存在浏览器客户端的内存中的也是会话cookie,浏览器一关闭就没有了

这个时候再次请求谷歌浏览器

曾经在浏览器内存中,在浏览器响应端的cookie 会发送给服务器,并且在请求端

ie浏览器

右侧是响应头表示的是Cookie 已经保存上了

> 另一个jsp获取浏览器归还的cookie! b.jsp

cookie 作为请求头打印到请求体中了

这个不是我们存的,是tomcat 自己干的事

删除cookie

<%@ 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 'b.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>
<h1>删除cookie</h1>
<%
Cookie cookie1 = new Cookie("aaa", "AAA");
cookie1.setMaxAge(0);
response.addCookie(cookie1);
%>
  </body>
</html>

 Cookie的生命

  * Cookie不只有name和value两个属性
  * Cookie的maxAge(掌握):Cookie的最大生命,即Cookie可保存的最大时长。以秒为单位,例如:cookie.setMaxAge(60)表示这个Cookie会被浏览器保存到硬盘上60秒
    > maxAge>0:浏览器会把Cookie保存到客户机硬盘上,有效时长为maxAge的值决定。
    > maxAge<0:Cookie只在浏览器内存中存在,当用户关闭浏览器时,浏览器进程结束,同时Cookie也就死亡了。
    > maxAge=0:浏览器会马上删除这个Cookie!

Cookie 路径

Cookie的path(理解):

    > Cookie的path并不是设置这个Cookie在客户端的保存路径!!!

    > Cookie的path由服务器创建Cookie时设置

    > 当浏览器访问服务器某个路径时,需要归还哪些Cookie给服务器呢?这由Cookie的path决定。

> 浏览器访问服务器的路径,如果包含某个Cookie的路径,那么就会归还这个Cookie。

什么是浏览器的访问路径:

  > 例如:

      <> aCookie.path=/day11_1/;bCookie.path=/day11_1/jsps/; cCookie.path=/day11_1/jsps/cookie/;

      <> 访问:/day11_1/index.jsp时,归还:aCookie

      <> 访问:/day11_1/jsps/a.jsp时,归还:aCookie、bCookie

      <> 访问:/day11_1/jsps/cookie/b.jsp时,归还:aCookie、bCookie、cCookie

> Cookie的path默认值:当前访问路径的父路径。例如在访问/day11_1/jsps/a.jsp时,响应的cookie,那么这个cookie的默认path为/day11_1/jsps/

保存cookie 的代码:

这里面含有两个jsessionid ,第一个是刚刚创建的,因为不同的项目创建的session是不同的,第二个sessionid 是上一个项目创建的

再添加两个cookie

会把前几个cookie带出来

含有上一次发送请求的cookies 会在这一次请求带过来发给服务器

由于aaa,bbb 的cookie路径是/day11_2/cookie1

第二次的浏览器路径包含cookie路径,所以会返回来

同理只要是包含,会把所有的cookie s 都返回来

Cookie路径是这样的

猜你喜欢

转载自blog.csdn.net/qq_20610631/article/details/82503430