jsp 请求转发 遇到的cookies问题

问: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读取到是一次设置的,也就是必须通过客户端向服务器发送请求时才能读取到。把跳转改response.sendRedirect("readCookie.jsp");转发的话是相当于服务器把请求自己转给自己。重定向才是客户端重新发请求给服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值