监听器

监听器

实现一个监听器的接口;(有n种监听器)

编写一个监听器,实现监听器的接口…

1.用于统计在线人数(session数量)的OnlineCountListener监听代码

//统计网站在线人数 : 统计session
public class OnlineCountListener implements HttpSessionListener {

    //创建session监听: 看你的一举一动
    //一旦创建Session就会触发一次这个事件!
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext ctx = se.getSession().getServletContext();

        System.out.println(se.getSession().getId());

        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. 自动销毁	 在web.xml配置销毁时间
     */
}

2.用于注册监听器和添加session自动销毁的web.xml代码

<!--注册监听器-->
<listener>
    <listener-class>com.xy.listener.OnlineCountListener</listener-class>
</listener>
<!--session自动销毁-->
<session-config>
    <session-timeout>1</session-timeout>
</session-config>

3.用于显示在线人数的index.jsp代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>$Title$</title>
    </head>
    
    <body>
        <h1>当前有 
            <span>		 <%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>
            </span> 
            人在线
        </h1>
    </body>
</html>

posted @ 2022-05-31 17:10  无关风月7707  阅读(651)  评论(0编辑  收藏  举报