Java多人在线聊天室(2)—显示在线人员列表

好的各位小伙伴

今天继续来搞聊天室


上次写了个登录退出功能,这次我们来补全一个显示在线人数的功能,这个是我们的main.jsp页面


Java多人在线聊天室(2)—显示在线人员列表_第1张图片

看到旁边这行在线人员列表了吗?


我们今天就搞这个,像上面微信呀!QQ呀!都有一个这样的功能,可以显示当前聊天室有哪些好友在线,对不对!俗话说麻雀虽小,五脏俱全。我们的项目虽然小但一些功能也是可以有的!


好现在让我们来看一下代码!


Java多人在线聊天室(2)—显示在线人员列表_第2张图片


虽然我们也是可以在这里写的!但是那样看起来就有点乱了。所以我们另外创建了一个online.jsp 页面,然后利用标签,把 online.jsp 页面引入我们的 main.jsp 中


在 online.jsp 页面,我们需要用到 jstl 标签把我们之前的包导进项目


Java多人在线聊天室(2)—显示在线人员列表_第3张图片



我们之前在分享的时候说过 servlet 有三大容器 (还记得servlet有三大容器吗) 我们选择用 servletContext 这个容器来存储我们的用户列表信息。


创建一个监听器,当我们的 tomcat 服务器启动的时候创建一个 userMap,然后把我们的userMap 放进 servletContext 中,这是我们得 userMap 是空的,没有任何的信息


Java多人在线聊天室(2)—显示在线人员列表_第4张图片


这个时候我们需要用到 HttpSessionBindingListener 监听器,这个监听器的作用大家可以百度一下。


Java多人在线聊天室(2)—显示在线人员列表_第5张图片


让我们的 userbean 来实现这个监听接口,实现接口中的两个方法,这样当我们创建一个 user 的时候,就可以监听到有新的用户生成,把我们的 user 对象和 session 进行绑定一起放进 userMap 中,另一个方法就是当我们的用户退出登录的时候,把 user 和 session 进行解绑操作!


Java多人在线聊天室(2)—显示在线人员列表_第6张图片


接下来修改一下我们的 userServlet,当我们的用户名和密码验证数据库通过之后,先把之前的 session 销毁,然后来获取我们的 usermap ,先判断一下,如果 usermap 中有这个用户的信息,就把 map 中 session 销毁,把后面用户的 session 添加进来!


Java多人在线聊天室(2)—显示在线人员列表_第7张图片


差不多了,让我们来一起看一下我们前端页面—online.jsp!


Java多人在线聊天室(2)—显示在线人员列表_第8张图片


让我们打开浏览器查看一下效果(这边利用两个浏览器模仿两个用户)登录一下账号。


Java多人在线聊天室(2)—显示在线人员列表_第9张图片


效果就是!后面登录的人可以获取到全部的在线用户列表!而先一步登陆进来的人,是看不到的后面是否有人登陆的,让我们刷新一下页面。


Java多人在线聊天室(2)—显示在线人员列表_第10张图片


刷新之后就可以看见后面上线的人了!所以我们来给页面添加一个刷新的功能,这样就可以解决这个问题了。


Java多人在线聊天室(2)—显示在线人员列表_第11张图片


在 js 中window.setInterval();就有定时刷新页面的功能,这里的1000指的是1000毫秒,就是1秒钟刷新一下 online.jsp 页面!这样我们就不需要下面的标签了,直接注释掉就可以了


下面的那个就是我们退出登录的 js 上次忘记截图了!这回补上!

还有一个退出的退出的 servlet 贴在下面了!


Java多人在线聊天室(2)—显示在线人员列表_第12张图片


项目源码的话

等我把文章写完在分享给大家!


Java多人在线聊天室(2)—显示在线人员列表_第13张图片



【福利合集】JavaSE 高阶篇文章汇总

【福利合集】JavaEE 进阶篇文章汇总

为什么有些 专业程序员 做出的软件 不被认可?

程序员就是这样聊天把女朋友聊没的。


你可能感兴趣的:(Java多人在线聊天室(2)—显示在线人员列表)