已经尝试过implements HttpSessionListener,然后在web.xml中配置监听器发现并不管用;但是当把spring本身的监听器注释掉后之前配置的计数监听器就起作用了,但是项目进不去了.
//spring的监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
//统计在线人数的监听器
<listener>
<listener-class>web.CountListener</listener-class>
</listener>
//代码
package web;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class CountListener implements HttpSessionListener{
/**
* session对象创建之后,容器会调用
* 此方法。
* 注:
* HttpSessionEvent是事件对象。
*/
public void sessionCreated(
HttpSessionEvent arg0) {
System.out.println(
"sessionCreated方法");
HttpSession session =
arg0.getSession();
ServletContext sctx =
session.getServletContext();
//通过Servlet上下文获得绑订的人数
Integer count =
(Integer)sctx.getAttribute(
"count");
if(count == null){
//第一个用户
count = 1;
}else{
//不是第一个用户
count ++;
}
sctx.setAttribute("count", count);
}
/**
* session对象销毁之后,容器会调用此方法。
*/
public void sessionDestroyed(
HttpSessionEvent arg0) {
System.out.println(
"sessionDestroyed方法");
ServletContext sctx =
arg0.getSession().getServletContext();
Integer count =
(Integer)sctx.getAttribute(
"count");
count --;
sctx.setAttribute("count", count);
}
}
最后总结:
1.SSM框架中到底如何实时统计在线人数?
2.两个监听器同时写在web.xml里貌似只会执行spring的,不会执行web.CountListener,这个怎么办?