jsp为什么我的首页一刷新就会有新的session产生?

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:46:33
我做了一个登录的功能
index.jsp 进行登录 验证成功后
session.setAttribute("loginname", 登录名称);

为什么我没有做任何操作的时候,在首页每刷新一次,我打印
session.getId(); 就会出现一个新值??

这样不对啊。每个客户端(一个域内浏览器)应该只会有一个sessionID啊.
有没有高手帮我解释一下?
我知道我错在哪里了。是因为我在首页增加了session.invalidate()
所以.它就会在失效后 不停的产生新的session.
你果然对WEB理解很透彻...!

这个问题比较复杂。。
首先你的代码可能会有问题
你可以编写一个测试页面index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<head>
</head>
<body>
<%=session.getId()%>
</body>
</html>
然后使用浏览器访问,刷新看页面显示sessionid会不会改变。如果你的浏览器没问题,只要该窗口不关闭,session的生命周期不结束,该sessionId应该就是一个值。如果你这个测试页面正常,那就说明你写的页面中有获得session的相关代码,而那个代码执行后产生了新的session。
其次,session功能需要浏览器的cookie支持,如果cookie功能关闭了,每次刷新就会产生新ID了。
再次,不同的浏览器对session的理解是不同的,火狐对同一个浏览器的不同窗口采取的是同一个session的机制,而IE浏览器的机制是一个窗口就是一个session。

如问题解决,请采纳本答案

jsp刷新有新的session是因为浏览器的cookie发生了变化,导致无法跟之前创建的session保持一致性导致的。
jsp中对应的cookie操作:

HttpCookie cookie = new HttpCookie("userName");
cookie.Value = userName;
cookie.Expires = DateTime.Now.AddHours(2);
Response.Cookies.Add(cookie);

第一行:创建一个HttpCookie对象,然后构造函数 给个cookie名称
第二行:给这个cookie赋值---->因为coo