日期:2014-05-17  浏览次数:20585 次

在servlet中存了cookie后,再转发到jsp,在jsp上得不到存的cookie, 可是一刷新就得到了,这是为什么????????
servlet中的代码:

Cookie cookie1 = new Cookie("userId",username);
cookie1.setMaxAge(24*3600*1000);
response.addCookie(cookie1);
Cookie cookie2 = new Cookie("passwd",password);
cookie2.setMaxAge(24*3600*1000);
response.addCookie(cookie2);
===================================================================================cookie这样存进去了
可是
接下来
request.getRequestDispatcher("login.jsp").forward(request, response);

==================================以下是jsp中的内容
<%
Cookie[] cookies = request.getCookies();
String username = "";
String password = "";
if(null != cookies){
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
if("userId".equals(name)){
username = value;
}else if("passwd".equals(name)){
password = value;
}
}
}
System.out.println("这里是JSP================+username===="+username+"===============password===="+password);
%>
========================================&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
:出问题了,这里得不到从cookie里得不,username和password,都没值
这里面取不到

可是刷新一下,就能显示了,就得到了
还得刷新一下才能取到,这是为什么????
这是为什么???

------解决方案--------------------
request的cookies 和response的cookies是不一样的。
request得到的是客户端通过 Cookie 标头形式由客户端传输到服务器的 Cookie
而response在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。
也就是说,一个是客户端向服务器端发送的来的,一个是服务器发送到客户端的

而request的Cookies读取到是一次设置的,也就是必须通过客户端向服务器发送请求时才能读取到。