jsp无法取到cookie问题及解决

今天笔者在写个小项目时用到记住密码,这个的实现原理也简单一般都是使用cookie,笔者也这样写的,先看我的servlet层的代码:

Customer customer=getReqParamObj(request, Customer.class);
		String remPwd=request.getParameter("checkboxSuccess");
		boolean flage=false;
		if(remPwd!=null&&remPwd.equals("on")){
			Cookie[] cs=request.getCookies();
			for(Cookie c:cs){
				if(c.getName().equals("userpwd")){
					c.setValue(customer.getCpwd());
					flage=true;
					break;
				}
			}
			if(!flage){
				Cookie cookie=new Cookie("userpwd", customer.getCpwd());
				cookie.setMaxAge(60*30);
				response.addCookie(cookie);
			}			
		}
getReqParamObj是我自己写的一个方法,通过反射机制将传过来的参数转换成对象,checkboxSuccess是对应是否勾选记住密码的复选框
看起来很简单很流畅,页面的cookie也有,问题来了,我在界面是这么取的

<div class="col-sm-10">
   <input type="password" class="form-control" id="cpwd"name="cpwd" placeholder="请输入密码" 
   value="${cookie.userpwd.value}" >
</div>
一切都是那么的自然,然而就是取不到,我以为是我的el表达式写错了,反反复复没看出毛病,换成小脚本来写如下:

<%
	Cookie [] cs=request.getCookies();
	String s="";
	if(cs!=null&&cs.length>0){
		for(Cookie c:cs){
			if(c.getName().equals("userpwd")){
				s=c.getValue();
				break;
			}
		}
	}
%>
再把input那改一下,居然还是不行,我只好debug,进去之后发现通过火狐浏览器看到的cookie中存在userpwd,但通过request取到的cookie中没有这个东西!!

      不淡定了,伤自尊了,后来我手贱,在servlet中多写了这么一句:

Customer customer=getReqParamObj(request, Customer.class);
		String remPwd=request.getParameter("checkboxSuccess");
		boolean flage=false;
		if(remPwd!=null&&remPwd.equals("on")){
			Cookie[] cs=request.getCookies();
			for(Cookie c:cs){
				if(c.getName().equals("userpwd")){
					c.setValue(customer.getCpwd());
					flage=true;
					break;
				}
			}
			if(!flage){
				Cookie cookie=new Cookie("userpwd", customer.getCpwd());
				cookie.setMaxAge(60*30);
				cookie.setPath("/");//就这一句话设置路径
				response.addCookie(cookie);
			}			
		}
然后他就可以了el轻松取到,我取网上看了一下原因,解释的不多,就记得好像不设置路径就会可能出现多个,但具体原因不清楚
先这样写着,我去问问大神。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值