2.5. リスナーの作成

2.5.1. リスナーとは

Webアプリケーション内のイベントをキャッチして、そのイベントが発生した際に、それに応じた処理を行うための仕組みです。イベントの対象として、ServletContextとHttpSessionとServletRequestがあります。イベントの種類には次のものがあります。
表2.2.5.1-1
イベント
説明
コンテキストの生成と破棄
Webコンテナの起動時やWebアプリケーションの配備時に、Webアプリケーションが起動する際に、コンテキスト(ServletContext)が生成されます。Webコンテナの停止などにより、Webアプリケーションが停止する際にコンテキストは破棄されます。
コンテキスト属性の操作
コンテキスト属性を追加、削除、置換したときです。
セッションの生成と破棄
セッションが生成されるときとタイムアウトなどにより破棄されるときです。
セッション属性の操作
セッション属性を追加、削除、置換したときです。
セッションの活性化と非活性化
セッションが活性化、または、非活性化されたときです。
リクエストの発生と終了
Webコンテナでリクエストを受け付けたとき(HttpServletRequestを作成したとき)とリクエストが終了するときです。
リクエスト属性の操作
リクエスト属性を追加、削除、置換したときです。

Memo
セッションの活性化と非活性化は、分散環境やセッションを永続的に保持するWebコンテナなどで有用です。利用する環境やWebコンテナを意識した使い分けが必要となります。

2.5.2. リスナーのインタフェース

Listenerは次に挙げるインタフェースを実装して作成します。
表2.2.5.2-1
インタフェース
説明
javax.servlet.
ServletContextListener
コンテキストの生成と破棄のイベントが発生したときの処理を実装します。contextInitialized(ServletContextEventsce)メソッドとcontextDestroyed(ServletContextEvent sce)メソッドを実装します。
javax.servlet.
ServletContextAttributeListener
コンテキスト属性を操作したイベントが発生したときの処理を実装します。attributeAdded(ServletContextAttributeEventscab)メソッドとattributeRemoved(ServletContextAttributeEventscab)メソッドとattributeReplaced(ServletContextAttributeEventscab)メソッドを実装します。
javax.servlet.http.
HttpSessionListener
セッションの生成と破棄のイベントが発生したときの処理を実装します。sessionCreated(HttpSessionEventse)メソッドとsessionDestroyed(HttpSessionEvent se)メソッドを実装します。
javax.servlet.
HttpSessionAttributeListener
セッション属性の操作のイベントが発生したときの処理を実装します。attributeAdded(HttpSessionBindingEventse)メソッドとattributeRemoved(HttpSessionBindingEventse)メソッドとattributeReplaced(HttpSessionBindingEventse)メソッドを実装します。
javax.servlet.
HttpSessionActivationListener
セッションの活性化と非活性化のイベントが発生したときの処理を実装します。sessionDidActivate(HttpSessionEvent se)メソッドとsessionWillPassivate(HttpSessionEvent se)メソッドを実装します。
javax.servlet.
HttpSessionBindingListener
valueBound(HttpSessionBindingEventevent)メソッドとvalueUnbound(HttpSessionBindingEventevent)メソッドを実装します。

2.5.3. リスナーウィザード

リスナーウィザードでは、リスナーを作成して、さらに、Webプロジェクト中のweb.xmlファイルに作成するリスナーの定義を追加することができます。
メニュー ファイル新規その他を選択して、新規画面のWeb配下のリスナーを選択して、次へをクリックします。


図2.2.5.3-1

この画面では、Webプロジェクトを指定することができます。ソース・フォルダーにWebプロジェクトのソース・フォルダーを指定することができます。


図2.2.5.3-2

入力項目は以下の通りです。
表2.2.5.3-1
名称
説明
プロジェクト
Webプロジェクト名です。
ソース・フォルダー
Webプロジェクトのソース・フォルダーです。
Javaパッケージ
リスナーのJavaパッケージです。
クラス名
リスナーのクラス名です。
スーパークラス
リスナーを継承するスーパークラスです。
既存リスナー・クラスを使用
既存リスナー・クラスを指定します。
次へをクリックすると、以下の画面が表示されます。 この画面では、リスナーするアプリケーション・ライフサイクル・イベントを選択することができます。


図2.2.5.3-3

次へをクリックすると、以下の画面が表示されます。この画面では、リスナーの修飾子、実装するインタフェース、およびメソッド・スタブを指定することができます。


図2.2.5.3-4