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指的是取鍵值對啊
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);?//設置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>老師,遇到一個奇怪的事; ?我用cookie保存用戶名和密碼后取值的時候卻總是取出的上一次的值;?
第一次: ?userName= user1 ? password=password1; 但是取出來為空;
第二次:? userName= user2 ? password=password2; 但是取出來確為第一次保存的值: ?user1, password2
在dologin.jsp頁面 , 第一次使用直接服務器跳轉: request.getRequestDispatcher("user.jsp").forward(request,respon);
這樣的話 在user.jsp頁面取值取出的總是上一次保存的cookie;
第二次我參照您的方法? <a herf="user.jsp"> userinfo</a> ?這樣取出來的值卻是正常的; ?
老師 請問這是為什么了?
2015-03-24
這個問題我也問了我的老師. ??
當然也非常謝謝您;@pang
2015-03-20
??request.getRequestDispatcher("user.jsp").forward(request,response);使用這句話把request中的值又傳回來了,也就是request里還有remember的值,remember的值不為空就不會執行else后面的語句,沒有移除cookie后重新添加,導致讀的還是原來的值。而使用超鏈接就不會發生這種情況。