日期:2014-05-20  浏览次数:20710 次

请问高手session的id的问题
a.jsp页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<%
session.setAttribute("name", "fhj");
//request.getRequestDispatcher("b.jsp").forward(request, response);
response.sendRedirect("b.jsp");
%>
</body>
</html>


b.jsp页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<%
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
out.println(cookies[i].getValue() + " "
+ cookies[i].getName());
}
}
%>
</body>
</html>

问题:为什么用转发跳转到页面 session的id没有保存的cookie里面啊 用重定向就保存到cookie里面了那

------解决方案--------------------
客户端第一次请求,有session就携带session id,没有session就没session id----》
服务器判断请求是否请求携带session id,携带即通过session id找到服务器上的session,没携带则创建session
-----》你通过session.setAttribute保存到session中,存在服务器上--------》
转发后,你通过session.getAttribute取对应的值,直接从服务器上的session取值
------》响应客户端请求只是把session id返回给客户端,不携带session中任何东西,也就是说你存值取值跟客户端一点关系都没有
。。。。累死了,不清楚怎么再细了,还不清楚就去找本书看下