Javaリスナーの使用

6039 ワード

目次
  • ディレクトリ
  • リスナーの概要
  • 二リスナーの用途
  • 3単純リスナーを作成するためのインスタンスステップ
  • 四リスナーの起動順序
  • 五リスナーの分類
  • 1は、傍受対象によって
  • に区分する.
  • 2は、傍受されたイベントに従って
  • に区分する.

  • 六servlet 30下のリスナーの使用

  • 一、リスナーの紹介
    定義:リスナーは実際にはクラスであり、このクラスは特定のインタフェースを実現し、このクラスをwebに置く.xmlファイルで説明します.これにより、サーバは起動時にこのクラスをインスタンス化し、リスナーを起動できます.範囲オブジェクトのステータスが変化すると、サーバはリスナーオブジェクトのメソッドを自動的に呼び出します.
    1.定義:サーブレット仕様で定義する特殊クラス2.ServletContext,HttpSession,ServertRequestなどのドメインオブジェクトの作成と破棄イベントをリスニングするために使用する.ドメインオブジェクトのプロパティが変更されたイベント4をリスニングするために使用されます.事件の発生前と発生後に必要な処理をすることができます.
    二、モニターの用途
    1.オンライン人数とオンラインユーザー2を統計する.システム起動時に初期化情報3をロードする.ウェブサイトのアクセス数を統計する4.スプリングと結合する
    三、単純なリスナーのインスタンスを作成するには
    1.クラスを作成し、リスナーを実装するインタフェース2.Webでxml構成で登録
    コードブロック(ここではsessionリスナーインタフェースを実装する):
        //                
        public class MyHttpSessionListener implements HttpSessionListener {
            //  session     
            @Override
            public void sessionCreated(HttpSessionEvent arg0) {
                System.out.println("session    !!");
            }
            //  session     
            @Override
            public void sessionDestroyed(HttpSessionEvent arg0) {
                System.out.println("session    !!");
            }
        }
    ----------
        // web.xml    
        <!--   HttpSession    -->
        <listener>
            <listener-class>org.nf.listener.MyHttpSessionListener</listener-class> </listener>

    四、リスナーの起動順序
    1.リスナーとフィルタ、servletのロード順優先度:リスナー>フィルタ>servlet
    五、リスナーの分類
    (1).リスナー別に分割
    ①            (servletContext)      
    ②          (HttpSession)      
    ③          (ServletRequest)      
    

    (2).リスニングされたイベントごとに区分
    ①ドメインオブジェクト自体の作成と破棄を傍受するイベントリスナー
    ServletContext: 1.サーブレットContextは、サーブレットContextListenerインタフェースによって実現する.メソッドはcontextInitialized()とcontextDestroyed()メソッド(サーバ起動時にcontextInitialized()メソッドが呼び出され、サーバを閉じるとcontextDestroyed()メソッドが呼び出される.主な用途:タイマーとグローバルプロパティオブジェクト
    HttpSession: 1.HttpSessionは、HttpSessionListenerインタフェースによって実現する.メソッドはsessionCreatedメソッドとsessionDestroyedメソッド(サーバがアクセスページを開始するとsessionCreatedメソッドが呼び出され、サーバを閉じるかブラウザを閉じるまでしばらくの間、sessionが期限切れになるか閉じないか、sessionがタイムアウトするとsessionDestroyedメソッドが呼び出されます)3.主な用途:オンライン人数の統計とアクセスログの記録
    ServletRequest: 1.サーブレットRequestは、サーブレットRequestListenerインタフェースによって実現する.方法としては、requestInitializedメソッドとrequestDestroyedメソッド(サーバがアクセスページを起動するときにrequestInitialized()メソッドを呼び出し、ページにアクセスしたときにrequestDestroyed()メソッドを呼び出す.主な用途:パラメータの読み取りとアクセス履歴の記録
    ②リスニングドメインオブジェクトにおける属性の増加と削除のイベントリスナー
    インタフェースの継承後に実装する方法:attributeAdded(新規)、attributeRemoved(削除)、attributeReplaced(置換)
    servletContext: 1.servletContextのプロパティの新規および削除イベントは、サーブレットContextAttributeListenerインタフェースによって実現されます.
    HttpSession: 1.HttpSessionのプロパティの追加と削除のイベントは、HttpSessionインタフェースによって実現されます.
    ServletRequest: 1.サーブレットリクエストのプロパティの新規および削除イベントは、サーブレットリクエストによって作成されます.
    ③HttpSessionドメインにバインドされたオブジェクトの状態をリスニングするイベントリスナー(HttpSessionのオブジェクトの状態を示す)
    1.バインド解除にバインドする(setAttribute()とremoveAttribute()を呼び出す方法)
    バインド:setAttributeによってsessionオブジェクトに保存されます.バインド解除:removeAttribute()メソッドを呼び出すことで削除します.実装インタフェース:HttpSessionBindingListenerインタフェースを実装し、webでは必要ないことに注意する.xmlに登録されている)継承インタフェースの実装方法としては,バインド(valueBound()メソッド),バインド解除(valueUnbound()メソッドがある.
    2.活性化へのパッシベーション(パッシベーションとはsessionをストレージデバイスに永続化し、活性化とはsessionをストレージデバイスから回復すること)
    パッシベーション:セッションオブジェクトをストレージデバイスに永続化します.活性化:sessionオブジェクトをストレージデバイスから復元する実装インタフェース:H t t p S e ssionActivationListenerインタフェースによって実装(注意:web.xmlに登録する必要はありません)インタフェースを継承した後に実装する方法は、パッシベーション(sessionWillPassivate()メソッド)、活性化(sessionDidActivate()メソッド)です.
    3.session不動態化機構
    ①sessionは通常の状態ではサーバに配置され、サーバはオンラインユーザごとにsessionを作成する②オンラインユーザが多い場合(数万以上)、session不動態化メカニズムを用いなければならない.本質は、サーバがあまり使用しないsessionオブジェクトをシステムファイルやデータベースシステムに一時的にシーケンス化し、使用されるとメモリに逆シーケンス化することである.プロセス全体がサーバによって自動的に完了
    4.tomcatでは、2つのセッションパッシベーションマネージャによって
    注意:セッションの不動態化メカニズムはセッションマネージャによって管理される
    最初のセッションパッシベーションマネージャ:org.apache.catalina.session.StandardManager
    1つは、Tomcatサーバがシャットダウンまたは再起動されると、tomcatサーバが現在のメモリ内のSessionオブジェクトをサーバファイルシステムに不動態化することである.②もう1つのケースは、Webアプリケーションが再ロードされると、メモリ内のSessionオブジェクトもサーバのファイルシステムに鈍化される③鈍化したファイルが保存される:Tomcatインストールロード(/work/Catalina/hostname/applicationname/SESSION.ser)
    第2のセッションパッシベーションマネージャ:org.apache.catalina.session.Persistentmanager
    区別:第1種との区別:第1種の不動態化メカニズムに基づいて拡張を行った
    1つは、Tomcatサーバがシャットダウンまたは再起動されると、tomcatサーバが現在のメモリ内のSessionオブジェクトをサーバファイルシステムに不動態化することである.②もう1つのケースは、Webアプリケーションが再ロードされると、メモリ内のSessionオブジェクトもサーバのファイルシステムに鈍化する③主流メモリを構成できるSessionオブジェクトの数、長く使用しないSessionオブジェクトをファイルシステムやデータベースに保存し、使用時に再ロードする
    5.デフォルトでは、tomcatは2つの不動態化駆動クラスを提供します.
    org.apache.Catalina.FileStoreとorg.apache.Catalina.JDBCStore
    (六)、servlet 3.0でのListenerの使用
    1.前提条件
    ①servlet 3を使用する.0新しい標準jarパッケージ;②JDKは1.6以上でなければならない③コンパイラのコンパイルレベルは6.0④webである.xmlファイルでは、3.0仕様⑤サポートservlet 3を使用する.0特性のwebコンテナ、例えばtomcat 7
    2.リスナーの使い方
    クラス内で1つの@WebListenerの注釈を実装するだけで使用できますが、この注釈はクラスをListenerとして宣言するために使用されます.@WebListenerによってマークされたクラスは、s e r v l t e C o n e x t ListenerサーブレットContextAttributeListener servlet RequestListenerサーブレットRequestAttributeListener HttpSessionListener HttpSessionAttributeListener