关于在servlet中创建了cookie,但在jsp中无法读取到该cookie的问题(已解决)

//servlet中的代码
Cookie c=new Cookie(“userlogin”, ul.toString());//ul是一个实体类的实例,我重写了该类的toString()方法返回的将是”用户名,密码”的字符串
c.setMaxAge(60);
response.addCookie(c);
request.getRequestDispatcher(“../shopPage.jsp”).forward(request, response);//转发方式跳转至shopPage.jsp

//jsp中的代码
if(cookies!=null&& cookies.length>0){
for(Cookie c:cookies){
if(c.getName().equals(“userlogin”)){
userlogin=c.getValue();
String[] uLogin=userlogin.split(“,”);
username=uLogin[0];
password=uLogin[1];
}
====问题1====
在jsp中我想获取servlet中设置的cookie完成自动登录的功能,但是发现得不到name是”userlogin”的cookie,最后原因是:
在servlet中设置的cookie只在该servlet所在的目录及其子目录下有效,而很不幸要获取cookie的那个.jsp文件所在的目录不在其中,所以根本获取不到
解决方法:
在servlet中设置cookie时多加一句 c.setPath(“/”),这样这个cookie的有效范围就可以扩充到整个项目了(”/”代表项目根目录)
====问题2====
但是在给cookie设置了path后,页面转发到shopPage.jsp中还是没有得到cookie,不过第二次进入shopPage.jsp页面cookie就获取到了,这个是因为:
我在servlet中使用的是转发的方式来跳转到shopPage.jsp页面,转发是服务端的行为(即服务端向服务端发送请求),而对cookie的赋值只有等下一次客户端向服务端请求时才能生效,所以第一次使用request.getCookies();时servlet中设置的cookie还没生效,而第二次便可以获取到了
解决方法:
在servlet中使用重定向的方式跳转到shopPage.jsp页面
即:response.sendRedirect(“../shopPage.jsp”);//重定向是客户端行为哦!

最后代码:
//servlet中的代码
Cookie c=new Cookie(“userlogin”, ul.toString());
c.setMaxAge(60);
c.setPath(“/”);//此处添加了一句
response.addCookie(c);
response.sendRedirect(“../shopPage.jsp”);//此处改为重定向方式跳转至shopPage.jsp页面

//jsp中的代码
if(cookies!=null&& cookies.length>0){
for(Cookie c:cookies){
if(c.getName().equals(“userlogin”)){
userlogin=c.getValue();
String[] uLogin=userlogin.split(“,”);
username=uLogin[0];
password=uLogin[1];
}

参考资料:
1、http://blog.csdn.net/z69183787/article/details/17396227
2、http://bbs.csdn.net/topics/390067857 (看二楼和三楼的解析)

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值