listener获取网站当前在线人数

 给网站添加监听器监听在线人数

  1,创建对应实现类,实现对应的sessionListener接口实现对应方法!

//统计网站在线人数:统计session
public class listener implements HttpSessionListener {
    @Override
    //创建session监听
    //一旦创建一个Session就会触发一次这个事件!
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        ServletContext ctx = httpSessionEvent.getSession().getServletContext();
        Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
        if (onlineCount==null){
            onlineCount = 1;
        }else {
            int count = onlineCount;
            onlineCount = count+1;
        }
        ctx.setAttribute("OnlineCount",onlineCount);
    }

    //销毁session监听
    @Override
    //一旦销毁Session就会触发一次这个事件
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        ServletContext ctx = httpSessionEvent.getSession().getServletContext();
        Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
        if (onlineCount==null){
            onlineCount = 1;
        }else {
            int count = onlineCount;
            onlineCount = count-1;
        }
        ctx.setAttribute("OnlineCount",onlineCount);
    }
}

2.配置web.xml文件加入对应的监听器

  <listener>
    <listener-class>com.shen.listener</listener-class>
  </listener>

3,在index.jsp文件中显示在线人数

<html>
<body>
<h2>Hello World!</h2>

<h1>当前有<span><%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>人在线></span></h1>
</body>
</html>

 最后的页面实现:

 当然也可以另开一个浏览模拟多人在线的情况来判断正确与否

但是需要注意同时用一种浏览器模拟在线人数(例如可以用一个360另一个用火狐或者ie来模拟多人在线的情况)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个比较常见的需求。我可以为你提供一个简单的实现方案。 首先,你需要创建一个Listener来监听网站访问的情况,统计在线人数。在Listener中,可以使用ServletContext来存储在线人数的信息。 ```java public class OnlineCounterListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext servletContext = servletContextEvent.getServletContext(); servletContext.setAttribute("onlineCounter", 0); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } } ``` 在ServletContextListener的contextInitialized方法中,我们初始化ServletContext中的onlineCounter属性为0,表示初始在线人数为0。 然后,在Servlet中,我们可以获取ServletContext中的在线人数信息,并在每次处理请求时进行更新。 ```java public class OnlineCounterServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext = req.getServletContext(); int onlineCounter = (int) servletContext.getAttribute("onlineCounter"); onlineCounter++; servletContext.setAttribute("onlineCounter", onlineCounter); resp.getWriter().write("当前在线人数:" + onlineCounter); } } ``` 在每次处理请求时,我们先获取ServletContext中的在线人数信息,然后将在线人数加1,再将更新后的在线人数写回到ServletContext中。最后,我们将当前在线人数返回给客户端。 最后,我们需要在web.xml中配置Listener和Servlet。 ```xml <listener> <listener-class>com.example.OnlineCounterListener</listener-class> </listener> <servlet> <servlet-name>OnlineCounterServlet</servlet-name> <servlet-class>com.example.OnlineCounterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>OnlineCounterServlet</servlet-name> <url-pattern>/onlineCounter</url-pattern> </servlet-mapping> ``` 这样,当用户访问/onlineCounter时,就会触发OnlineCounterServlet的doGet方法,更新在线人数并返回当前在线人数给客户端。 当然,这只是一个简单的实现方案,实际上在线人数的统计可能还需要考虑一些其他因素,比如用户的登录状态等。但是这个方案可以作为一个起点,供你参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抓一大把枸杞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值