zoukankan      html  css  js  c++  java
  • java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)

    在JavaWeb中的监听器分类

           在Javaweb中存在三个被监听对象:

           HttpServletRequest

           HttpSessoin

           ServletContext

    监听者

    被监听者

    监听到事件对象

    HttpSessionActivationListener

    HttpSession – 监听HttpSession活化和顿化。

    HttpSessionEvent 

    HttpSessionAttributeListener[W1] 

    HttpSession – 监听session的属性变化的。S.setAttributee();

    HttpSessionBindingEvent 

    HttpSessionBindingListener

    HttpSession - 监听哪一个对象,绑定到了session上。S.setAtrri(name,User);

    HttpSessionListener[W2] 

    HttpSesion – 监听sessioin创建销毁

    HttpSessionEvent

    ServletContextAttributeListener

    ServletContext – 属性变化的

    ServletContextListener

    servletContext 创建销毁

    ServletRequestListener - serlvetRequestAttibuteListner

    Rrequest -创建销毁


    实现一个监听器HttpServletRequest的创建销毁

    第一步:实现一个类:

    package cn.hx.listener;

    import javax.servlet.ServletRequestEvent;

    import javax.servlet.ServletRequestListener;

    public class RequestListener implements ServletRequestListener {

        public void requestDestroyed(ServletRequestEvent sre) {

            System.err.println("request销毁了:");

            Object o = sre.getSource();

            System.err.println("这个o is :"+o);//apache.RequestFaced@22222

        }

        public void requestInitialized(ServletRequestEvent sre) {

            System.err.println("request创建了:");

            Object o = sre.getSource();

            System.err.println("这个o是 :"+o);//apache.RequestFaced@22222

        }

    }

    第二步:必须要配置到web.xml

    <listener>

        <listener-class>cn.itcast.listener.RequestListener</listener-class>

      </listener>

    说明:

    1:配置一个Listener只要求提供类名就可以了。

    2:在tomcat启动时,会自动的初始化这个监听器类。

    3:tomcat创建的Listner,Serlvet,Filter都是单列的.

     在线人数

    只要有人访问本站点,成功创建一个Session就是一个会话,一个会话就是一个在线人数。

    用HttpSSessionListener来监听Session的创建。

    第一步:

    package cn.hx.listener;

    import java.util.ArrayList;

    import java.util.List;

    import javax.servlet.ServletContext;

    import javax.servlet.http.HttpSession;

    import javax.servlet.http.HttpSessionEvent;

    import javax.servlet.http.HttpSessionListener;

    /**

     * 以下实现在线人数的统计

     */

    public class MySessionListener implements HttpSessionListener {

        private Integer online=1;

        //request.getSession();

        public void sessionCreated(HttpSessionEvent se) {

            System.err.println("有人访问本网点了");

            HttpSession hs1 = (HttpSession) se.getSource();

            HttpSession hs2 = se.getSession();

            System.err.println("hs1:"+hs1.getId()+","+hs2.getId()+",ip:");

            //获取整个域的对象

            ServletContext sc= se.getSession().getServletContext();

            sc.setAttribute("online",online++);

            //将所有session放到servletContext

            //先从application获取所有已经维护的sesison

            List<HttpSession> list = (List<HttpSession>) sc.getAttribute("sessions");

            if(list==null){//第一个访问的人

                list = new ArrayList<HttpSession>();

                sc.setAttribute("sessions", list);

            }

            list.add(hs2);

        }

        //过期(30),s.invalidate();

        public void sessionDestroyed(HttpSessionEvent se) {

            System.err.println("有人退出了..."+se.getSession().getId());

            ServletContext sc= se.getSession().getServletContext();

            sc.setAttribute("online",online--);

        }

    }

  • 相关阅读:
    MyBatis+MySQL 返回插入的主键ID
    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml
    微信自动回复消息示例
    微信自定义菜单
    微信获取二维码
    微信被动回复用户消息-文本消息-填坑
    微信获得access-token
    设置ckeditor的高度
    Java三行代码搞定MD5加密
    Highchart
  • 原文地址:https://www.cnblogs.com/zhenghongxin/p/4482855.html
Copyright © 2011-2022 走看看