cookie.setPath()不同设置效果的区别

代码如下:

Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(30*60);
cookie.setPath("/Servlet");
resp.addCookie(cookie);

Tomcat的Application context设置是 /

1.今天在一个项目中遇见怎样一个情况,设置了cookie的生存时间为60*30,设置cookie.setPath("/Servlet");在测试是发现一个问题,按理来说,在cookie的生命期内,重新关闭浏览器在进行访问,cookie是可以保存数据的,但是确实没有把数据保存下来,更离谱的是该cookie还被注销了。

2.于是我就尝试解决这个问题,首先我的直觉告诉我既然是浏览器上cookie被注销了,那问题很大可能出在浏览器,于是查找浏览器cookie设置,一无所获。

所以我考虑从代码出发,试试看。

首先,修改cookie.setMaxAge(30);

我就想知道到底cookie生命时间设置有没有生效,结果没有生效,时间超过30秒后,该cookie还没有被注销,说明时间的多少不是决定性因素。

第二步,修改cookie.setPath("/Servlet")-->cookie.setPath("/")

结果正确,当第一次访问是,记录我现在的数据,关闭浏览器,重新访问URL,展示的还是我之前选择的结果。这就是自己想要的效果。所以原因找到了。

3.具体测试过程如下:

 4.扩展:

我还是想知道在什么情况情况下,cookie.setPath("/Servlet")才会生效,于是上网查找资料,关于cookie.setPath()的用法,网上是这样解释的:

 总结上图来说:就是要让cookie.setPath("/Servlet")生效,那么就要在Tomcat的Servlet应用下才能获取cookie,于是我尝试修改Tomcat的Application context设置为/Servlet :

 

进行测试,效果和Application context设置为 / 且cookie.setPath("/")一样的。

5.结论:

cookie要生效,cookie.setPath("/")要和Tomcat的Application context设置一起配合使用,不然就会出现cookie设置不起作用的情况。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值