cookie保存后取值總是上一次的
<%@?page?language="java"?contentType="text/html;?charset=utf-8" ????pageEncoding="utf-8"%> <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"> <title>Insert?title?here</title> </head> <body> <% request.setCharacterEncoding("utf-8"); System.out.println(request.getParameter("userName")); System.out.println(request.getParameter("password")); String[]?remember=request.getParameterValues("remember"); if(remember!=null&&remember.length>0){ String?userName=request.getParameter("userName"); String?password=request.getParameter("password");//getParameter是去?name的值;?getAttribute指的是取鍵值對(duì)啊 Cookie?userNameCookie=new?Cookie("userName",userName); Cookie?passwordCookie=new?Cookie("password",password); userNameCookie.setMaxAge(86400); passwordCookie.setMaxAge(86400); response.addCookie(userNameCookie); response.addCookie(passwordCookie); }else ????{ ????????Cookie[]?cookies?=?request.getCookies(); ????????if(cookies!=null&&cookies.length>0) ????????{ ???????????for(Cookie?c:cookies) ???????????{ ??????????????if(c.getName().equals("userName")||c.getName().equals("password")) ??????????????{ ??????????????????c.setMaxAge(0);?//設(shè)置Cookie失效 ??????????????????response.addCookie(c);?//重新保存。 ??????????????} ???????????} ????????} ?????} request.getRequestDispatcher("user.jsp").forward(request,response); %> <!--? <a??target="_blank"?h?r?e?f="user.jsp">c?h?a?n?k??an</a> ?--> </body> </html>
老師,遇到一個(gè)奇怪的事; ?我用cookie保存用戶名和密碼后取值的時(shí)候卻總是取出的上一次的值;?
第一次: ?userName= user1 ? password=password1; 但是取出來(lái)為空;
第二次:? userName= user2 ? password=password2; 但是取出來(lái)確為第一次保存的值: ?user1, password2
在dologin.jsp頁(yè)面 , 第一次使用直接服務(wù)器跳轉(zhuǎn): request.getRequestDispatcher("user.jsp").forward(request,respon);
這樣的話 在user.jsp頁(yè)面取值取出的總是上一次保存的cookie;
第二次我參照您的方法? <a herf="user.jsp"> userinfo</a> ?這樣取出來(lái)的值卻是正常的; ?
老師 請(qǐng)問(wèn)這是為什么了?
2015-03-24
這個(gè)問(wèn)題我也問(wèn)了我的老師. ??
當(dāng)然也非常謝謝您;@pang
2015-03-20
??request.getRequestDispatcher("user.jsp").forward(request,response);使用這句話把request中的值又傳回來(lái)了,也就是request里還有remember的值,remember的值不為空就不會(huì)執(zhí)行else后面的語(yǔ)句,沒(méi)有移除cookie后重新添加,導(dǎo)致讀的還是原來(lái)的值。而使用超鏈接就不會(huì)發(fā)生這種情況。