java session问题
发布网友
发布时间:2022-04-24 11:27
我来回答
共4个回答
热心网友
时间:2023-10-11 04:46
你懂数据库不,往session里面放的这个UserBean里面一般存有用户名、或id等唯一标志的东西,所以不会和其他的UserBean对象重的,这跟数据库里的主键有点类似,不会有重复记录。
但是,你在同一台机器上,用同一个用户名密码,打开多个浏览器,登陆同一个网站,这样服务器端也是保存这个session.setAttribute("User", UserBean),下一次的会把上一次的重新改写掉。
session在服务器端判断的,这个东西对同一段时间同一台机器的多个不同浏览器来说,是同一个session(这也就是为什么你登陆了比如当当网,然后你再直接开当当网其他网页会发现已经登陆了)。
多说一句,session是servlet里比较深奥的东西,你其实想了解更多session的机制,可以多查查资料,其实session判断不同用户用的是sessionId这个东西,它有两种实现方法实现判断,客户端cookie和url重写,作用是一样的。
对于补充的问题,要区分以下两点:
1)因为session是服务器端的对象,放得多了会导致服务器端的内存占用过大,往session中存放大量信息,不一定导致每次浏览器与服务器之前的通讯数据会增大,这不一定,服务器会变慢。
2)浏览器与服务器之前的通讯数据是否会增大,这是由request, response这些负责通讯的对象所带数据决定的,一般是看request的参数(post, get)的多不多来决定的,太多也会导致服务器反应变慢。
两者的机制是有区别的,后果都是致服务器性能下降。
最后建议,除了跨越多个页面的,如用户信息这些内容的,都不要用session.setAttribute,优先考虑用request.setAttribute
热心网友
时间:2023-10-11 04:47
session容器,存储有还有session id 不同的IE产生的sessionid不同,一个用户相当于用一个IE来访问服务器...
热心网友
时间:2023-10-11 04:47
session是对每个浏览器的会话,是单对单的,互补干涉。
也就是我登录网站的session是跟你登录的session是两个不同的实例,就好比一个类的两个对象
热心网友
时间:2023-10-11 04:48
session表示一个会话,服务器会为每个会话开辟一个单独的空间来存储相关的信息,所以不同用户取数不会冲突
所谓会话:通俗点讲就是你用浏览器打开一个页面,只要不再次在地址栏中输入新地址,那么你在这个页面做的所有操作都是
同一会话中(就算弹出新窗口,在新窗口中的操作也是同一会话)