session监听器统计在线人数存入数值后不能取出其值
首先这是一个在线统计人数的需求,给大家看看我的代码
监听器的类:
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.freesky.platform.core.utils.SessionUtils;
/**
* 登录用户统计
* @author Administrator
*
*/
@WebListener //在此注明以下类是监听器
public class UserCountListener implements HttpSessionListener{
public int count = 0;
@Override
public void sessionCreated(HttpSessionEvent httpSession) {
HttpSession session = httpSession.getSession();
count++;
session.setAttribute(SessionUtils.SKEY_USERCOUNT, count);
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSession) {
HttpSession session = httpSession.getSession();
count--;
session.setAttribute(SessionUtils.SKEY_USERCOUNT, count);
}
}
在web.xml上配置监听器:
<listener>
<listener-class>com.freesky.sctelecom.fsportal.core.listener.UserLoginListener</listener-class>
</listener>
在页面获取:
${sessionScope.USERCOUNT}
然后问题出来了:
可以进去监听器,在监听器中也可以获取,但是,在页面不能获取。
解决办法:
我在登录的时候通过如下代码,取出然后再次存入,就能获取
session.setAttribute(SessionUtils.SKEY_USERCOUNT, session.getValue("USERCOUNT"));
不知道有没有没有其他好的办法,我必虚心请教。