监听器的使用

以监听一个网页的在线人数为例

public class OnlineCountListener implements HttpSessionListener {
    //创建Session的监听,创建一个Session就会触发一次事件
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext ctx = se.getSession().getServletContext();
        Integer onlineCount = (Integer)ctx.getAttribute("OnlineCount");

        if(onlineCount==null)
        {
            onlineCount = new Integer(1);
        }
        else{
            int count = onlineCount.intValue();
            onlineCount = new Integer(count+1);
        }

        ctx.setAttribute("OnlineCount",onlineCount);

    }

    //销毁Session的监听
    //一旦销毁Session就会触发一次事件
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext ctx = se.getSession().getServletContext();
        Integer onlineCount = (Integer)ctx.getAttribute("OnlineCount");

        if(onlineCount==null)
        {
            onlineCount = new Integer(0);
        }
        else{
            int count = onlineCount.intValue();
            onlineCount = new Integer(count-1);
        }

        ctx.setAttribute("OnlineCount",onlineCount);
    }

    /*
    回忆——Session销毁的俩种方法:
    1.手动销毁 getSession().invalidate();
    2.自动销毁 
    	<session-config>
        <session-timeout>1</session-timeout>
    	</session-config>
     */
}

在web.xml中注册

<!--注册监听器-->
    <listener>
        <listener-class>com.krito.listener.OnlineCountListener</listener-class>
    </listener>
发布了23 篇原创文章 · 获赞 43 · 访问量 1384

猜你喜欢

转载自blog.csdn.net/qq_41256881/article/details/105289101