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輕鬆取到,我取網上看了一下原因,解釋的不多,就記得好像不設置路徑就會可能出現多個,但具體原因不清楚
先這樣寫着,我去問問大神。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章