黑马程序员技术交流社区

标题: Session对象用法疑惑? [打印本页]

作者: 杨占伟    时间: 2012-12-5 00:02
标题: Session对象用法疑惑?
本帖最后由 杨占伟 于 2012-12-5 12:35 编辑

例如:后台程序有个Session["User"] = username 来保存用户登录的名子.
Session对象是在服务器端运行的,那所有浏览此网站并登录的用户是不是都要
用这个Session["User"].
如果张三登录 Session["User"] = "张三";
如果李四登录 Session["User"] = "李四";
如果其它人登录Session["User"] = 其它用户......

如果有好多的用户,服务器该处理哪个用户的Session对象呢?是怎么处理的?
因为服务器只有一个Session对象那么名字为"张三"的能不能读到名字"李四"的Session["User"]?

作者: 许庭洲    时间: 2012-12-5 07:29
Asp.net已经内置了Session机制,建议不要放太多的对象到Session,Session会有超时销毁的机制。
作者: 生活墨墨    时间: 2012-12-5 08:53
你说的是在同一个浏览器上还是不再同一个浏览器上,其实可以写一个放一个隐藏域,然后给个随机数,有用户登录的时候把在随机数Session["User"+随机数],然后在后面调用的时候就直接用随机数,当然这是母板页,如果不是母板页那么只能通过传值的方式来传递随机数
作者: 生活墨墨    时间: 2012-12-5 08:54
你上面的写法是直接覆盖,就是重新赋值,这样只能取到一个Session值
作者: 刘-洋    时间: 2012-12-5 10:20
如果张三登录 Session["User"] = "张三";
如果李四登录 Session["User"] = "李四";
如果其它人登录Session["User"] = 其它用户......
你写的seession["user"]只能保存一个用户,seession名一样,先前写的就被覆盖掉了,
如果改成user1 user2 user3 这样可以都保存。
作者: 杨占伟    时间: 2012-12-5 12:35
非常感谢~~~
作者: 陈辉    时间: 2012-12-5 17:03
不同浏览器或同一个浏览器的不同进程登录时,当登录成功,服务器会将一个SessionId(用于标注服务器重的Session对象)一cookie的形式发挥浏览器
作者: 刘亚龙    时间: 2012-12-5 22:57
每个用户的Session对象是独立的,当浏览器向服务器发出请求后,如果要启用Session,则会有一个唯一标识存储在本地的Cookie中,服务器端会在内存中以这个唯一标识开辟一块区域存储用户的Session对象。浏览器每次请求都会带着这个唯一标识,服务器会通过这个唯一标识来访问不同用户的Session,所以不同用户的Session不会冲突。
比如:
张三登录 Session["User"] = "张三";
李四登录 Session["User"] = "李四";
他们有各自的Session区域。
Session有默认超时机制,超过指定时间用户没有访问则Session被销毁。如果在Sesson中放置太多数据会较大消耗服务端资源。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2