Servlet_9th_Cookie共享与URL的关系

一、Cookie共享与URL的关系
同一个浏览器,同一个窗口访问同一个服务器下的servletA和servletB,servletB可能无法读取servletA产生的cookie信息,这涉及cookie共享与URL的关系。
通过两个实验来理解一下cookie共享与URL的关系:
1、实验一:
1)在前一篇博文的基础上,将SetCookies.java中的@WebServlet("/SetCookies")更改为:


ShowCookies.java的url地址不要变动。


2)为保证实验结果准确可靠,重启服务器。

3)将IE浏览器的cookies缓存数据清空(清除本地cookie):

工具 -- Internet选项 -- 常规 -- 浏览历史记录 -- 删除 -- Cookie和网站数据 -- 删除,点击确定退出。

4)将所有IE浏览器页面关闭(清除内存中的cookie)。

5)新开一个IE浏览器窗口,访问:http://localhost:8080/TestServlet/Servlet/SetCookies
页面效果:


注意不要点超链接,超链接的链接地址不是我们想要的,
此时访问会链接到http://localhost:8080/TestServlet/Servlet/ShowCookies,显然会报404。

6)在当前窗口地址栏输入:http://localhost:8080/TestServlet/ShowCookies
页面效果:


好像没有任何的cookie,说明req.getCookies()返回的是个null而不是cookie数组。


2、实验二:
1)将SetCookies.java中的@WebServlet("/Servlet/SetCookies")还原为:


ShowCookies.java的url地址改为:


2)重启服务器。

3)同样将IE浏览器中的cookies删除干净,并将所有IE浏览器页面关闭。

4)新开一个IE浏览器窗口,访问:http://localhost:8080/TestServlet/SetCookies


5)在当前窗口地址栏输入:http://localhost:8080/TestServlet/Servlet/ShowCookies


现在ShowCookies可以通过req.getCookies()获取到所有cookie。

总结:
一个servlet/jsp设置的cookies能够被同一个路径下面或者子路径下面的servlet/jsp读到(即共享)。
这里的路径指的是URL,而非真实的文件路径。

理清思路:
①SetCookies产生了cookies,并将cookies放到客户端的硬盘或内存中。

②ShowCookies读取cookies。

③如果SetCookies的路径是/Servlet/SetCookies,即在localhost:8080/WebApp/Servlet/路径下,

而ShowCookies的路径是/ShowCookies,即在localhost:8080/WebApp/路径下,

也就是说后者和前者不在同一路径下,后者也不是前者的子路径,所以后者无法访问到前者产生的cookie。

④如果SetCookies的路径是/SetCookies,即在localhost:8080/WebApp/路径下,

而ShowCookies的路径是/Servlet/ShowCookies,即在localhost:8080/WebApp/Servlet/路径下,

即后者位于前者的子路径下,所以后者能访问前者产生的cookie。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值