1、の概念
イベントソース:オブジェクトが監視されています。リスナー3メインモニタのドメインオブジェクト、つまりセッションのServletContextを要求
リスナー:オブジェクトの状態変更のリスナーコンポーネント
応答挙動:対応するリスナー待機するオブジェクトの状態変化のアクション出発。
2、リスナーの分類
Javaのウェブでは、リスナーの種類より、イベントソース(モニタオブジェクト)、またモニターの操作に応じて分類することができるに従って分類することができます。ここでは、モニタの動きに応じて分類されています。
そのリスナーの(1)モニタドメインオブジェクトの作成と破棄:
SercvletContextのに耳を傾ける①ServletContextListener オブジェクト
HttpSessionに耳を傾ける②HttpSessionListener オブジェクト
ServletRequestに耳を傾ける③ServletRequestListener オブジェクト
(2)、プロパティリスナードメインオブジェクトを高め、変更、および削除イベントリスナー
HttpSessionに耳を傾ける⑤HttpSessionAttributeListener オブジェクトのプロパティ
ServletRequestに耳を傾ける⑥ServletRequestAttributeListener オブジェクトのプロパティ
(3)ドメインのHttpSessionイベントリスナにバインドされたオブジェクトの状態を監視します
HttpSessionBindingListenerのインターフェースの結合ターゲットを達成し、持ち上げるためにセッションを聞く⑦HttpSessionBindingListener
(セッションの永続性を持つ)⑧HttpSessionActivationListenerインタフェース
3例
(1)定義リスナー
パッケージcom.web.listener。 輸入れるjavax.servlet.ServletContextEvent; 輸入javax.servlet.ServletContextListener; パブリック クラス MyListener 実装のServletContextListener { 静的{ System.out.println( "MyListenerは、ロードされました" ); } パブリックMyListener(){ System.out.println( "MyListenerは、インスタンス化" ); } 公共 のボイドcontextDestroyed(ServletContextEvent SCE){ } 公共 のボイドcontextInitialized(ServletContextEvent SCE){ sce.getServletContext(); System.out.println(「のServletContext開始の作成」)。 } }
パッケージcom.web.listener。 輸入れるjavax.servlet.http.HttpSessionEvent; 輸入javax.servlet.http.HttpSessionListener; パブリック クラス MySessionListener 実装HttpSessionListenerの{ 静的{ System.out.println( "MySessionListenerがロードされました" ); } パブリックMySessionListener(){ System.out.println( "MySessionListenerはインスタンス化" ); } 公共 ボイドのsessionCreated(HttpSessionEvent SE){ } 公共 ボイドのsessionDestroyed(HttpSessionEvent SE){ } }
パッケージcom.web.listener。 輸入javax.servlet.ServletRequestEvent; 輸入javax.servlet.ServletRequestListener; パブリック クラス MyRequestListener 実装ServletRequestListener { 静的{ System.out.println( "MyRequestListenerがロードされました" ); } パブリックMyRequestListener(){ System.out.println( "MyRequestListenerはインスタンス化" ); } 公共 のボイドrequestDestroyed(ServletRequestEvent SRE){ } 公共 ボイドrequestInitialized(ServletRequestEvent SRE){} }
(2)登録されたリスナー
<! - 注册监听器- > < 聞き手> < リスナークラス> com.web.listener.MyRequestListener </ リスナクラス> </ リスナー> < 聞き手> < リスナクラス> com.web.listener.MySessionListener </ リスナクラス> </ リスナー> < リスナー> < リスナクラス> com.web.listener.MyListener </ リスナクラス> </ リスナー>
(3)結果
ロード順序を設定するためにweb.xmlがリスナーがされているとき
4、ライフサイクル
リスナーは、コンテナがロードされ、インスタンス化されると、コンテナの破壊が閉じて開始します。
図5に示すように、リスナーのロード順序、フィルタ、サーブレット三の成分
リスナーとフィルターはあなたがWebコンテナの起動時にロードされますが、リスナーが以前にロードされています。サーブレットは、デフォルトをロードした最初の訪問では、起動時にロードするの<load-on-startup>タグのWebコンテナで構成されますが、サーブレットのロード時間は、3つの主要コンポーネントの最新であることができます。
3つのコンポーネントのロード順ようです:リスナー - >フィルタ - >サーブレット