问题描述
我想了2天也没想出来,希望大家多多指导我用jsp做了一个登陆页面和主页,我想把每个登陆的用户名显示到主页,怎么实现?可以多个用户同时登录,刷新后用户名不覆盖,就需要保存多个session,怎么保存?jsp页面怎么取到? 问题补充:我想做一个网页的群聊系统,我想实现的功能是 在一台电脑上同时可以登陆多个账号,就像可以登陆多个QQ一样,但是在网页中好像一次只能登录一个QQ。首先在登录成功后将 用户名 保存到session,但是登录第二个的时候第一个的信息会被覆盖,所以我就想用多个session保存,每一个session保存一个。但是不知道这里该如何保存多个session,在页面中又如何在session中获取自己的 用户名。String username=req.getParameter("username");req.getSession().setAttribute("name", username);req.getRequestDispatcher("index.jsp").forward(req, resp);<input type="hidden" name="name" id="id" value="${name }">我是这样写的,每次都会被覆盖,只会存在一个,请问如何保存多个?
解决方案
其实我想了一下,你想做的也不是没有可能。有很多用户去共享一个session,而这个session中保存用户名,同时要求你的客户端必须得保留用户名信息,因为你是做聊天系统,所以肯定只停留在一个页面内,在一个页面内,你使用js来保存客户端信息,类似cookie的功能。服务端怎么去保存呢?首先每个浏览器与服务器建立了唯一的连接,只有唯一的sessionId,你可以通过这个sessionId在session中保存,通过这个sessionId保存来自这个session的所有用户信息。
解决方案二:
引用enet_java 写道如果非要这么实现可以考虑,session中放入一个set对象,set对象中存储每个用户的信息,这个按照KEY值获取到set对象,然后将里面的数据遍历展示就可以了。key值是多少?页面中能传到服务端吗?key值就是用户session的key就可以了,肯定是可以传到服务端的。
解决方案三:
楼上的各位回答这个问题的时候请想清楚:同一台电脑可以通过多个session连接到服务器吗?lz,即使你第二次登录的时候用的是新打开的窗口,要么你获得了第一次登录的效果,要么,你会冲掉第一个session,只存在第二个session,也就是会自动的销毁第一个。我还是郑重的提醒各位,反正我是没有见过同一台电脑可以同时以多个用户登录同一系统,我做了很长时间的web,就没有发现可以这么做过。
解决方案四:
我再提醒一下lz,比如你一台客户机与服务器相连,你与服务器之间只存在唯一的sessionId,他是唯一的,同一个客户机和服务器不能同时存在多个session,这是确定的事实。你下一个用户登录了,你上一个用户就会失去这个session,你想像qq一样,那你看到webqq什么时候可以同时登录多个账号了,那仅限于应用程序,web是做不到的,建议到web2.qq.com上自己好好试试。
解决方案五:
只在app里面实现的话,session这一级别是取不到的,要至少要到application级别。建议设计一张表,记录用户的登录信息,这样的好处是不仅可以查询出现在有哪些人在线,也可以统计出,系统每天的登录率。
解决方案六:
如果非要这么实现可以考虑,session中放入一个set对象,set对象中存储每个用户的信息,这个按照KEY值获取到set对象,然后将里面的数据遍历展示就可以了。
解决方案七:
这种做法不是最好的,既然知道哪些人登录了,数据库中不就可以区分吗?可以根据记录查询出来,并显示,思路不是挺清晰的吗?
解决方案八:
不用想了,一个客户机和服务器连接只能建立唯一的一个session,所以不可能拥有多个session的,所以你不用想下去了
解决方案九:
需要维护一个登陆信息列表,比如用户信息 UserInfoList<UserInfo> list;session.setAttribute("userlist","list");然后不断的添加刷新
解决方案十:
一般用户表可以添加个用户状态字段,用于表示当前用户是否已登录当你要显示当前所有登录的用户,直接查询数据库中状态为已登录的用户
解决方案十一:
我用jsp做了一个登陆页面和主页,我想把每个登陆的用户名显示到主页,怎么实现?。。。。。。。。。。。。。。。。。。。。。。。。。。用户登录的信息可以用session保存,但要显示其他的用户名,建议用Map<Integer sessionID,String userName>处理或者保存到数据库。