ホームページ >Java >&#&チュートリアル >リスナーを使用して Web サイトにグローバル統計を実装する例

リスナーを使用して Web サイトにグローバル統計を実装する例

零下一度
零下一度オリジナル
2017-06-27 10:19:311614ブラウズ

1. Web サイトのグローバル統計変数クラス、グローバル変数のみを定義します

 1 package com.lt.listener; 2  3 import java.util.Date; 4 import java.util.HashMap; 5 import java.util.Map; 6  7 import javax.servlet.http.HttpSession; 8 /** 9  * 网站全局变量类10  * @author LIUTIE11  *12  */13 public abstract class ApplicationConstants {14     15     /**16      * 用户登录session名称17      */18     public static final String LOGIN_SESSION_NAME = "userInfo";19 20     /**21      * 索引所有的session  
22      * 用于单一登录23      */24     public static Map<string> SESSION_MAP = new HashMap();25     26     /**27      * 当前在线用户数28      */29     public static int CURRENT_LOGIN_COUNT = 0;30     31     /**32      * 历史访客总数33      */34     public static int TOTAL_HISTORY_COUNT = 0;35     36     /**37      * 最高同时在线人数38      */39     public static int MAX_ONLINE_COUNT = 0;40     41     /**42      * 服务器启动时间43      */44     public static Date SERVER_START_DATE = new Date();45     46     /**47      * 最高在线人数时间48      */49     public static Date MAX_ONLINE_COUNT_DATE = new Date();50     51     52     53 }</string>
コードを表示

2. サーバー情報を記録するためのサーブレットコンテキスト監視を実装します

 1 package com.lt.listener; 2  3 import java.util.Date; 4  5 import javax.servlet.ServletContextEvent; 6 import javax.servlet.ServletContextListener; 7  8 /** 9  * servletContext监听10  * 记录服务器信息 启动关闭时间等11  * @author LIUTIE12  *13  */14 public class MyContextListener implements ServletContextListener {15 16     /**17      * 服务器启动时被调用18      */19     @Override20     public void contextDestroyed(ServletContextEvent arg0) {21         //记录启动时间22         ApplicationConstants.SERVER_START_DATE = new Date();23     }24 25     /**26      * 服务器关闭时被调用27      */28     @Override29     public void contextInitialized(ServletContextEvent arg0) {30         //保存数据到硬盘31         // TODO Auto-generated method stub32     }33 34 }

3. HttpSessionListener、HttpSessionAttributeListener モニタリングを実装します。これは、ログイン情報、訪問者の総数、オンラインの人数を記録し、シングル ログインを実現するために使用されます。顧客の情報 IP、URL などを記録するために使用されるリクエスト監視を実装します。

  1 package com.lt.listener;  2   3 import java.util.Date;  4   5 import javax.servlet.http.HttpSession;  6 import javax.servlet.http.HttpSessionAttributeListener;  7 import javax.servlet.http.HttpSessionBindingEvent;  8 import javax.servlet.http.HttpSessionEvent;  9 import javax.servlet.http.HttpSessionListener; 10  11 /** 12  * session监听 13  * 记录登录信息 访问总人数 在线人数等 14  * 实现单一登录 15  * @author LIUTIE 16  * 17  */ 18 public class MySessionListener implements HttpSessionListener, HttpSessionAttributeListener { 19  20     /** 21      * session创建时被调用 22      */ 23     @Override 24     public void sessionCreated(HttpSessionEvent sessionEvent) { 25         // 获取创建的session 26         HttpSession session = sessionEvent.getSession(); 27         // 添加到map 28         ApplicationConstants.SESSION_MAP.put(session.getId(), session); 29         // 访问总人数++ 30         ApplicationConstants.TOTAL_HISTORY_COUNT++; 31         // 如果map总数大于最高同时在线人数则更新最高在线人数及时间 32         if (ApplicationConstants.MAX_ONLINE_COUNT 
コードを表示

5. Web でリスナーの行を設定します。オブジェクト:

HttpSessionListener: sessionCreated(HttpSessionEvent sessionEvent)、sessionDestroyed(HttpSessionEvent sessionEvent) ServletRequestListener: requestInitialized(ServletRequestEvent イベント)、requestDestroyed(ServletRequestEvent イベント)
ServletContextListener: contextInitialized(Servlet) ContextEvent イベント)、contextDestroyed (ServletContextEvent イベント) 2オブジェクトの属性変更を監視するためのリスナー:

HttpSessionAttributeListener: (セッションの追加、更新、または削除時にトリガーされます)

attributeAdded(HttpSessionBindingEvent イベント)、attributeReplaced(HttpSessionBindingEvent イベント)、attributeRemoved(Ht tpSessionBindingEvent イベント) ServletConTextAttributelistener: (トリガー時Context の追加、更新、削除) AttributeAdDed (ServletContextAteEvent Event)、AttributeRePlaced (server IButeevent Event)、AttributeReMoved (ServletContextattributeeEvent)
ServletRequestAttributelistener: (リクエストの追加、更新、削除) )
属性added(ServletRequestAttributeEvent イベント)、attributeReplaced( ServletRequestAttributeEvent イベント)、attributeRemoved(ServletRequestAttributeEvent イベント)

3. セッション内のオブジェクトをリッスンする

HttpSessionBindingListener: (オブジェクトがセッションに配置されるか、セッションから削除されるときにトリガーされます)

valueBound(HttpSessionBindingEvent イベント)、valueUnbound (Ht tpSessionBindingEventイベント)

HttpSessionActivationListener: (セッション内のオブジェクトがパッシベーションされ、オブジェクトが再ロードされるときにトリガーされます ps: セッション内のコンテンツをハードディスクに保存するプロセスはパッシベーションと呼ばれ、パッシベーションにはシリアル化可能なシリアル化インターフェイスが必要です)

sessionWillPassivate (HttpSessionEvent イベント)、sessionDidActivate(HttpSessionEvent イベント)

以上がリスナーを使用して Web サイトにグローバル統計を実装する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。