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也有,问题来了,我在界面是这么取的

一切都是那么的自然,然而就是取不到,我以为是我的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轻松取到,我取网上看了一下原因,解释的不多,就记得好像不设置路径就会可能出现多个,但具体原因不清楚
先这样写着,我去问问大神。

你可能感兴趣的:(jsp)