java web-05-listtener

实现一个监听器的接口有很多:这是其中一种

HttpSessionListener

public class OnlineCountListener implements HttpSessionListener {
    //创建session监听
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();

        System.out.println(se.getSession().getId());//输出session的Id,判断有几个session
        //Integer:整数
        Integer onlineCount = (Integer) servletContext.getAttribute("OlineCount");

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

        servletContext.setAttribute("OlineCount",onlineCount);
    }

    //销毁session监听
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();
        //invalidate:使无效
        se.getSession().invalidate();

        Integer onlineCount = (Integer) servletContext.getAttribute("OlineCount");

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

        servletContext.setAttribute("OlineCount",onlineCount);

    }
}
<!--注册监听器-->
<listener>
    <listener-class>com.feng.listener.OnlineCountListener</listener-class>
</listener>

<session-config>
    <session-timeout>1</session-timeout>
</session-config>

例:

public class TestPanel {
    public static void main(String[] args) {
        Frame frame = new Frame("Hello World!");//建一个窗体
        Panel panel = new Panel(null);
        frame.setLayout(null);//设置窗体的布局
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(0,0,200));//设置背景颜色
        panel.setBounds(100,100,300,300);
        panel.setBackground(new Color(0,200,0));//设置背景的颜色
        frame.add(panel);
        frame.setVisible(true);

        //监听事件,监听关闭事件;addWindowListener:添加窗口事件
        frame.addWindowListener(new WindowListener() {
            public void windowOpened(WindowEvent e) {
                System.out.println("打开");
            }
            public void windowClosing(WindowEvent e) {
                System.out.println("关闭ing");
                System.exit(0);
            }
            public void windowClosed(WindowEvent e) {
                System.out.println("关闭ed");
            }
            public void windowActivated(WindowEvent e) {
                System.out.println("激活");
            }
            public void windowDeactivated(WindowEvent e) {
                System.out.println("未激活");
            }
        });

    }
}	
posted @ 2021-10-11 20:47  比特风  阅读(31)  评论(0)    收藏  举报