我们书上原话是这么说的:
问题:如果不使用response进行重定向,而是使用getRequestDispatcher().forward();方式可以吗?
解答:不可以,应为使用response对象的sendRedirect()方法是将页面重定向到一个新的地址,即重新向服务器发送一个请求,服务器已经对上一个请求作出了处理,在客户端写入了cookie,如果使用转发的形式.那么服务器接受的是相同的请求并没有返回相应,因而在客户端没有写入cookie.
----------------
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>session练习</title>
</head>
<body>
<%
session.setAttribute("test", "hello");
response.sendRedirect("getCookie.jsp");
//request.getRequestDispatcher("getCookie.jsp").forward(request,
// response);
%>
</body>
</html>-------------------------------<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>session练习</title>
</head>
<body>
<%
out.println("sessionid:" + session.getId());
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
out.print("cookie name:" + cookies[i].getName());
out.print("<br/>");
out.print("cookie value" + cookies[i].getValue());
}
}
%>
</body>
</html>
--------------------
然后我分别验证了一下 使用转发 也能写入啊 请高手 给解释一下 是怎么回事啊
问题:如果不使用response进行重定向,而是使用getRequestDispatcher().forward();方式可以吗?
解答:不可以,应为使用response对象的sendRedirect()方法是将页面重定向到一个新的地址,即重新向服务器发送一个请求,服务器已经对上一个请求作出了处理,在客户端写入了cookie,如果使用转发的形式.那么服务器接受的是相同的请求并没有返回相应,因而在客户端没有写入cookie.
----------------
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>session练习</title>
</head>
<body>
<%
session.setAttribute("test", "hello");
response.sendRedirect("getCookie.jsp");
//request.getRequestDispatcher("getCookie.jsp").forward(request,
// response);
%>
</body>
</html>-------------------------------<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>session练习</title>
</head>
<body>
<%
out.println("sessionid:" + session.getId());
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
out.print("cookie name:" + cookies[i].getName());
out.print("<br/>");
out.print("cookie value" + cookies[i].getValue());
}
}
%>
</body>
</html>
--------------------
然后我分别验证了一下 使用转发 也能写入啊 请高手 给解释一下 是怎么回事啊
sessionid:D5C5476D53D40E82A618577E1C3AAD7 只有我自己打印的id可是当我第二次点击的是很为什么就给我写入了那
sessionid:D5C5476D53D40E82A618577E1C3AAD75
ocookie name: JSESSIONID
cookie value: D5C5476D53D40E82A618577E1C3AAD75
这是为什么那