jsp 的session为啥会变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp 的session为啥会变化相关的知识,希望对你有一定的参考价值。

jsp 的session为什么会变化不太方便上传代码。大体是这样的是一个jsp+javabean的登录程序
首先是登录界面 login.jsp 提交表单后action跳转至判断用户名和密码的界面 judge.jsp , 匹配成功后 将用户名username存入session中,转发至登录成功的界面 success.jsp,此界面将session中的username取出来判断。
下面有两种情况session的id发生变化
①我先成功登录后,从后端得到一个session的id,但此时我在同一浏览器再新建一个标签页直接进入success.jsp 得到的session的id却不同。

②先登录成功跳转至success.jsp界面,得到一个id,然后我在此界面上返回登录界面login.jsp,再刷新,获取一个id。结果两个id不同

session值变化,说明某操作已经给session重新赋值。比如原本session.setAttribute("username","Amy"),后来悠悠某步骤session.setAttribute("username","Sky"),
此时session.getAttribute("username").toString() == "Sky"
所以session的attr值重新赋值当然会变化。session值变化肯定是重新赋值的原因追问

但是我先开起一个网页,登录成功跳转至success.jsp后,在在同一个浏览器下新开一个网页,不登陆直接进去success.jsp为什么这个时候id变了?这时只在第一个页面设置了一次username呀

代码太长,不太方面。我知道没代码很难找出错,你就帮我看看大概有哪些可能出现的错吧,谢谢了

追答

要明白,关闭浏览器session失效,如果不是关闭浏览器新开success.jsp的话,不妨在控制台打印出来看看这个session改变之后的值是啥再进行调试

参考技术A 线索太少,分析不出追答

可能是项目名称用了中文,URL 有中文之类的

追问

项目名称没有中文

我只想知道大概有哪些可能,会导致这种问题发生

django session为啥不会重新登录

参考技术A django里自带的session表中没有session值。
在生成session时,会sessionkey保存到cookie中一份存在浏览器,同时也会保存的服务端一份,而session的value也保存在服务端。django里自带了一个,session表,可以自动存储session。

以上是关于jsp 的session为啥会变化的主要内容,如果未能解决你的问题,请参考以下文章

servlet里Map对象存进Session,在JSP里取出来以后Map里面值为空,这是为啥?

为啥刷新一下页面SessionID会变

jsp作业:内置对象的4个作用范围是啥?啥情况下session会关闭?

django session为啥不会重新登录

JAVA中servlet页面怎样刷新session,使JSP页面得到即使更新????

jsp 清除session的方法