在线人数统计

我写了一个实现了HttpSessionBindingListener接口的类来统计在线人数,如果用户直接关掉ie,怎样才能让在线人数减一呢?

接口用错了,应该是HttpSessionListener。
可以给会话设置超时,超时后回话被销毁,sessionDestroyed()方法会被调用,在这里把人数减一。

不是错误。从servlet2.3开始可以用HttpSessionListener

必须等到session失效吗?有没有可能即时的减一

没有。
servlet只是动态地产生html代码并发送给客户端浏览器,浏览器再执行html代码。
所以,当客户关闭浏览器后,server不会收到任何通知。她只会觉得,10分钟过了,某个session还没有发送请求,session应该超时了,于是把session销毁。