Cookie 是保存到客户端的东西
1 当浏览器中没有cookie的时候
谷歌浏览器—右侧工具栏设置—内容设置
cookie显示的是空的浏览器随便请求一个jsp 页面,因为由于访问jsp 页面服务端这个时候,因为jsp 中含有session ,,cookie携带者sessionId 保存到客户端去(显示在客户端的响应头)
查看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+"/";
%>
My JSP 'a.jsp' starting page
保存Cookie
<%-- 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);
%>
新创建的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+"/";
%>
My JSP 'b.jsp' starting page
删除cookie
<%
Cookie cookie1 = new Cookie("aaa", "AAA");
cookie1.setMaxAge(0);
response.addCookie(cookie1);
%>
* 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路径是这样的