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

我做了一个登录的功能index.jsp进行登录验证成功后session.setAttribute("loginname",登录名称);为什么我没有做任何操作的时候,在首页... 我做了一个登录的功能
index.jsp 进行登录 验证成功后
session.setAttribute("loginname", 登录名称);

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

这样不对啊。每个客户端(一个域内浏览器)应该只会有一个sessionID啊.
有没有高手帮我解释一下?
我知道我错在哪里了。是因为我在首页增加了session.invalidate()
所以.它就会在失效后 不停的产生新的session.
你果然对WEB理解很透彻...!
展开
 我来答
千锋教育
2015-12-19 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
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赋值---->因为cookie是以键值对存储的 ex:userName = “admin”
第三行:设置此cookie的失效时间,此值是一个具体的失效时间datetime类型 上面是设置两个小时后失效
第四行:将cookie写到cookie中。
注意:
1. 因为Cookice是存储在客户端的数据,如果有敏感的数据必须在服务端加密后然后在保存
2. Cookice在客户端有两种保存形式:(1)保存在硬盘上(设置了cookice的失效时间的情况下) (2)保存在内存中(在没有设置cookice的失效时间的情况下)
3. 如果服务端的cookice和客户端已有的cookice重名则会覆盖原有的cookice
4. 如果要想清除某个cookice的话可是设置它的失效时间小于当前的日期即可cookie.Expires = DateTime.Now.AddDays(-1);
呆呆小白
推荐于2017-09-21 · TA获得超过1193个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:531万
展开全部
这个问题比较复杂。。
首先你的代码可能会有问题
你可以编写一个测试页面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。

如问题解决,请采纳本答案
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式