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

a564925512 2012-05-25 11:04:29
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,都没值
这里面取不到

可是刷新一下,就能显示了,就得到了
还得刷新一下才能取到,这是为什么????
这是为什么???
...全文
205 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
erikmao 2013-12-26
  • 打赏
  • 举报
回复
同意楼上的,今天改代码就遇到了这个问题!谢谢!
古布 2012-05-25
  • 打赏
  • 举报
回复
request的cookies 和response的cookies是不一样的。
request得到的是客户端通过 Cookie 标头形式由客户端传输到服务器的 Cookie
而response在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。
也就是说,一个是客户端向服务器端发送的来的,一个是服务器发送到客户端的

而request的Cookies读取到是一次设置的,也就是必须通过客户端向服务器发送请求时才能读取到。
a564925512 2012-05-25
  • 打赏
  • 举报
回复
大家,高手们给说说
lori_yzy 2012-05-25
  • 打赏
  • 举报
回复
你把跳转改成 response.sendRedirect("readCookie.jsp");

2楼说的不错,转发的话是相当于服务器把请求自己转给自己。重定向才是客户端重新发请求给服务器。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧