项目启动,监听器多次被调用。统计人数出问题

MrRohwei 2018-08-16 06:02:18
如题,项目启动的时候调用了三次我自己写的OnlineCountListener类,
我用来统计在线人数的。可是我服务一启动就会调用三次这个sessionCreated方法。
我的监听器

package com.looveh.demo1;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class OnlineCountListener implements HttpSessionListener {

public int count = 0;

@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
System.out.println("session created");
count++;
httpSessionEvent.getSession().getServletContext().setAttribute("count",count);
}

@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
System.out.println("session destroyed");
count--;
httpSessionEvent.getSession().getServletContext().setAttribute("count",count);
}
}


HTML


<%@page language="java" pageEncoding="utf-8" contentType="text/html; charset=UTF-8" %>
<html>
<body>
<h2>Hello World!</h2>
在线人数:<%=application.getAttribute("count")%>
</body>
</html>


web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>

<listener>
<listener-class>com.looveh.demo1.OnlineCountListener</listener-class>
</listener>
</web-app>



启动的时候就直接是3了,销毁什么的都是正常的!
...全文
547 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
沁海棠 2018-08-21
  • 打赏
  • 举报
回复
引用 6 楼 Mr_Rohwei 的回复:
[quote=引用 5 楼 qinhaotong 的回复:]
[quote=引用 4 楼 Mr_Rohwei 的回复:]
[quote=引用 3 楼 qinhaotong 的回复:]
[quote=引用 2 楼 Mr_Rohwei 的回复:]
[quote=引用 1 楼 qinhaotong 的回复:]
你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.



是调用了3次,我的控制台打印了3次sessionCreated。就那么几行代码。不知道问题出在哪[/quote]

我试了一下确实会自动进行调用(有时候3次有时候2次), 这应该和idea 有关系,在我把代码打包部署到 tomcat上直接运行时,结果是正确的.具体原形不清楚[/quote]

好的吧!真的是醉了[/quote]

我自己试的也是那样,打包部署了是正常的。。。[/quote]


你是打成war包放到tomcat下运行吗?[/quote]

嗯嗯, 打包放 webapps 下是正常的,我也是醉了. 搞不懂为啥.
MrRohwei 2018-08-21
  • 打赏
  • 举报
回复
引用 5 楼 qinhaotong 的回复:
[quote=引用 4 楼 Mr_Rohwei 的回复:]
[quote=引用 3 楼 qinhaotong 的回复:]
[quote=引用 2 楼 Mr_Rohwei 的回复:]
[quote=引用 1 楼 qinhaotong 的回复:]
你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.



是调用了3次,我的控制台打印了3次sessionCreated。就那么几行代码。不知道问题出在哪[/quote]

我试了一下确实会自动进行调用(有时候3次有时候2次), 这应该和idea 有关系,在我把代码打包部署到 tomcat上直接运行时,结果是正确的.具体原形不清楚[/quote]

好的吧!真的是醉了[/quote]

我自己试的也是那样,打包部署了是正常的。。。[/quote]


你是打成war包放到tomcat下运行吗?
沁海棠 2018-08-20
  • 打赏
  • 举报
回复
引用 4 楼 Mr_Rohwei 的回复:
[quote=引用 3 楼 qinhaotong 的回复:] [quote=引用 2 楼 Mr_Rohwei 的回复:] [quote=引用 1 楼 qinhaotong 的回复:] 你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.
是调用了3次,我的控制台打印了3次sessionCreated。就那么几行代码。不知道问题出在哪[/quote] 我试了一下确实会自动进行调用(有时候3次有时候2次), 这应该和idea 有关系,在我把代码打包部署到 tomcat上直接运行时,结果是正确的.具体原形不清楚[/quote] 好的吧!真的是醉了[/quote] 我自己试的也是那样,打包部署了是正常的。。。
MrRohwei 2018-08-20
  • 打赏
  • 举报
回复
引用 3 楼 qinhaotong 的回复:
[quote=引用 2 楼 Mr_Rohwei 的回复:]
[quote=引用 1 楼 qinhaotong 的回复:]
你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.



是调用了3次,我的控制台打印了3次sessionCreated。就那么几行代码。不知道问题出在哪[/quote]

我试了一下确实会自动进行调用(有时候3次有时候2次), 这应该和idea 有关系,在我把代码打包部署到 tomcat上直接运行时,结果是正确的.具体原形不清楚[/quote]

好的吧!真的是醉了
沁海棠 2018-08-18
  • 打赏
  • 举报
回复
引用 2 楼 Mr_Rohwei 的回复:
[quote=引用 1 楼 qinhaotong 的回复:]
你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.



是调用了3次,我的控制台打印了3次sessionCreated。就那么几行代码。不知道问题出在哪[/quote]

我试了一下确实会自动进行调用(有时候3次有时候2次), 这应该和idea 有关系,在我把代码打包部署到 tomcat上直接运行时,结果是正确的.具体原形不清楚
MrRohwei 2018-08-17
  • 打赏
  • 举报
回复
引用 1 楼 qinhaotong 的回复:
你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.



是调用了3次,我的控制台打印了3次sessionCreated。就那么几行代码。不知道问题出在哪
沁海棠 2018-08-16
  • 打赏
  • 举报
回复
你debug看下启动的时候调用了三次?你用浏览器多建几个链接关了tomcat再启动看看什么情况.

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧