HttpSession事件监听器的sessionCreated不被执行

项目中需要统计在线用户数,用了HttpSessionListener,LoginController调用request.getSession(),HttpSessionListener事件监听器的sessionCreated不执行。

相关代码

@WebListener
public class SessionListener  implements HttpSessionListener, HttpSessionAttributeListener {

    public static final Logger logger = LoggerFactory.getLogger(SessionListener.class);

    /**
     * 记录session的数量
     */
    public int count = 0;

    public SessionListener(){

        logger.info("SessionListener......");
    }

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        logger.info("===============sessionCreated===============");
        System.out.println("【HttpSessionListener监听器】count++  增加");
        count++;
        httpSessionEvent.getSession().getServletContext().setAttribute("count", count);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        logger.info("===============sessionDestroyed===============");
        System.out.println("【HttpSessionListener监听器】count--  减少");
        count--;
        httpSessionEvent.getSession().getServletContext().setAttribute("count", count);

    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("1111111111111111111111111111");
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("222222222222222222222222222222");
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("333333333333333333333333333333333");
    }

项目启动时,有打印SessionListener......,说明已经监听类已经初始化,有调用到监听。

阅读 5.2k
1 个回答
新手上路,请多包涵

打印SessionListener...... 只能说明这个监听器被spring容器归纳,因为你这句是在构造函数里。
除了写一个@WebListener的类之后。还需要configuration配置这个监控器

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏