7. リスナー
サーブレット 7章 リスナー
サーブレットでも様々なリスナーが提供されています。この章では、まずServletContextに関するリスナーの説明をします。次の章でセッションに関するリスナーの説明をします。 7.1. Webアプリケーションの起動/シャットダウンを検知する「javax.servlet.ServletContextListener」はWebアプリケーションの起動/シャットダウンを検知するリスナーです。TomcatによってWebアプリケーションが起動/シャットダウンされた時にリスナーが呼ばれるので、Webアプリケーションの初期化や終了処理に利用する事ができます。ServletContextListenerで定義されているメソッドは以下の2つです。 // Webアプリケーションの起動時に呼ばれるメソッド void contextInitialized(javax.servlet.ServletContextEvent event) // Webアプリケーションのシャットダウン時に呼ばれるメソッド void contextDestoryed(javax.servlet.ServletContextEvent event) contextInitializedはWebアプリケーションの起動時、contextDestroyedはシャットダウン時に呼ばれるメソッドです。ServletContextEventは起動/シャットダウンしたWebアプリケーションの情報を格納するイベントオブジェクトで、「getServletContext」メソッドによってServletContextを取得することができます。以下はServletContextListenerを利用して、Webアプリケーションの初期化処理を行うリスナーの例です。 import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContext;
public class InitializationListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
ServletContext context=event.getServletContext();
String app_message=... // DBからデータを読み込む
context.setAttribute("app_message", app_message); // 登録処理
}
public void contextDestoryed(ServletContextEvent event){
ServletContext context=event.getServletContext();
context.removeAttribute("app_message"); // 削除処理
}
}
最後にリスナーの設定について説明します。ServletContextListenerを有効にするためには、web.xmlへの設定が必要です。 <web-app> ... </filter-mapping> <listener> リスナーの設定は<listener>タグで行います。<listener>タグは<filter-mapping>の後、<servlet>の前に設定します。<listener>タグの子要素は<listener-class>のみで、<listener-class>にはリスナークラスの完全修飾名を指定します。<listener>タグはリスナーの数だけ設定します。 <listener>タグは<filter>や<servlet>と異なり、初期値を設定するためのタグを子要素に持ちません。もし何らかの初期値を読み込むようにしたい場合は、<context-param>に設定し、ServletContextで読み込むようにして下さい。 (実習課題1)以下のWebアプリケーションを作成しなさい。
|
![]()
![]()
|