为了账号安全,请及时绑定邮箱和手机立即绑定

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>  这样取出来的值却是正常的;  

老师 请问这是为什么了?


正在回答

4 回答

这个问题我也问了我的老师.   

当然也非常谢谢您;@pang

0 回复 有任何疑惑可以回复我~

  request.getRequestDispatcher("user.jsp").forward(request,response);使用这句话把request中的值又传回来了,也就是request里还有remember的值,remember的值不为空就不会执行else后面的语句,没有移除cookie后重新添加,导致读的还是原来的值。而使用超链接就不会发生这种情况。

0 回复 有任何疑惑可以回复我~
#1

饺子_ 提问者

这个问题我也问了我的老师. 当然也非常谢谢您;@pang
2015-03-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

cookie保存后取值总是上一次的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信