今日继续来搞聊天室
上次写了个登录退出功用,这次我们来补全一个显现在线人数的功用,这个是我们的main.jsp页面

java学习交流群234811600
看到周围这行在线人员列表了吗?
我们今日就搞这个,像上面微信呀!QQ呀!都有一个这样的功用,能够显现当前聊天室有哪些好友在线,对不对!俗话说麻雀虽小,五脏俱全。我们的项目尽管小但一些功用也是能够有的!

java学习交流群234811600
尽管我们也是能够在这里写的!可是那样看起来就有点乱了。所以我们另外创建了一个online.jsp 页面,然后使用jsp:include标签,把 online.jsp 页面引进我们的 main.jsp 中
在 online.jsp 页面,我们需求用到 jstl 标签把我们之前的包导进项目

java学习交流群234811600
我们之前在分享的时分说过 servlet 有三大容器 (还记得servlet有三大容器吗) 我们挑选用servletContext 这个容器来存储我们的用户列表信息。
创建一个监听器,当我们的 tomcat 服务器发动的时分创建一个 userMap,然后把我们的userMap 放进 servletContext 中,这是我们得 userMap 是空的,没有任何的信息

java学习交流群234811600
这个时分我们需求用到 HttpSessionBindingListener 监听器,这个监听器的作用大家能够百度一下。


java学习交流群234811600
让我们的 userbean 来完成这个监听接口,完成接口中的两个办法,这样当我们创建一个 user 的时分,就能够监听到有新的用户生成,把我们的 user 目标和 session 进行绑定一同放进 userMap 中,另一个办法就是当我们的用户退出登录的时分,把 user 和 session 进行解绑操作!

java学习交流群234811600
接下来修正一下我们的 userServlet,当我们的用户名和密码验证数据库通过之后,先把之前的 session 毁掉,然后来获取我们的 usermap ,先判断一下,如果 usermap 中有这个用户的信息,就把 map 中 session 毁掉,把后面用户的 session 增加进来!

java学习交流群234811600
差不多了,让我们来一同看一下我们前端页面—online.jsp!

java学习交流群234811600
让我们翻开浏览器检查一下作用(这边使用两个浏览器模仿两个用户)登录一下账号。

java学习交流群234811600
作用就是!后面登录的人能够获取到悉数的在线用户列表!而先一步登陆进来的人,是看不到的后面是否有人登陆的,让我们改写一下页面。

java学习交流群234811600
改写之后就能够看见后面上线的人了!所以我们来给页面增加一个改写的功用,这样就能够解决这个问题了。

java学习交流群234811600
在 js 中window.setInterval();就有定时改写页面的功用,这里的1000指的是1000毫秒,就是1秒钟改写一下 online.jsp 页面!这样我们就不需求下面的jsp:include标签了,直接注释掉就能够了

java学习交流群234811600
下面的那个就是我们退出登录的 js 上次忘记截图了!这回补上!
还有一个退出的退出的 servlet 贴在下面了!

java学习交流群234811600

希望大家多多关注,每天会发布更多精彩内容哦!!!!