Webアプリに何らかのイベントが発生した際にそれをプログラムに通知する機能がリスナーです。
この機能があると、イベントの発生と連動したプログラムの実行を行う事ができる!!
ServletContextオブジェクト関連のイベントが発生した際に呼び出されるのがリスナーというわけ。
ServletContextListenerインターフェース
- サーブレットコンテキスト(Webアプリケーション)が起動するときや破棄されるときに呼び出されます。
- そのため、Servletプログラムの初期化処理をしたい場合や、終了処理をしたい場合に使用します。
- ServletContextListenerインタフェースには以下のメソッドが定義されています。
戻り型 |
method |
説明 |
void |
contextInitialized(ServletContextEvent) |
サーブレットコンテキスト(Webアプリケーション)が起動するときに呼び出されるメソッド |
void |
contextDestroyed(ServletContextEvent) |
サーブレットコンテキスト(Webアプリケーション)が破棄されるときに呼び出されるメソッド |
- メソッドの引数に指定されているServletContextEventクラスには以下のメソッドが定義されている。
戻り型 |
method |
説明 |
ServletContext |
getServletContext() |
対象のServletContextオブジェクトを返す。 |
ServletContextAttributeListenerインターフェース
- applicationスコープを持つデータが追加・置換・削除されたときに呼び出されます。
- 該当のデータに変更があったときにその変更をログに出力したい場合などに使用します。
- ServletContextAttributeListenerインタフェースには以下のメソッドが定義されています。
戻り型 |
method |
説明 |
void |
attributeAdded(ServletContextAttributeEvent) |
applicationスコープを持つデータが追加されたときに呼び出されるメソッド。 |
void |
attributeReplaced(ServletContextAttributeEvent) |
applicationスコープを持つデータが置換されたときに呼び出されるメソッド。 |
void |
attributeRemoved(ServletContextAttributeEvent) |
applicationスコープを持つデータが削除されたときに呼び出されるメソッド。 |
- メソッドの引数に指定されているServletContextAttributeEventクラスには以下のメソッドが定義されています。
戻り型 |
method |
説明 |
ServletContext |
getServletContext() |
対象のServletContextオブジェクトを返す。 |
String |
getName() |
追加、置換、削除されたデータの名前を返す。 |
Object |
getValue() |
追加、置換、削除されたデータの値を返す。 |
web.xmlの設定は?
要素 |
内容 |
要素数 |
description |
リスナーの説明 |
0以上 |
display-name |
GUIツールで表示されるリスナーの名前を記載 |
0以上 |
icon |
GUIツールで表示される画像を指定 |
0以上 |
listener-class |
リスナーインタフェースを実装したServletクラスを記載 |
1 |
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems,Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<!-- (1)リスナークラスを登録します。 -->
<listener>
<listener-class>checkListenerServlet</listener-class>
</listener>
<servlet>
<servlet-name>addDataServlet</servlet-name>
<servlet-class>addDataServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addDataServlet</servlet-name>
<url-pattern>/addDataServlet</url-pattern>
</servlet-mapping>
</web-app>