トッカンソフトウェア

リスナー

web.xmlに登録するか、クラスの頭に@WebListenerアノテーションを付け、リスナークラスをimplementsすると、リスナーを動作することが出来ます。

以下のリスナーは@WebListenerアノテーションを付けるだけでいけますが、下記以外はweb.xmlに登録して下さい。
(以下のクラスは@WebListenerアノテーションを付けなくてもweb.xmlに登録しても行けます。)
リスナー 説明
HttpSessionAttributeListener セッションの保存、削除
HttpSessionListener セッションの作成、破棄
ServletContextAttributeListener アプリケーションの保存、削除
ServletContextListener アプリケーションの開始、終了
ServletRequestAttributeListener リクエストを保存、削除
ServletRequestListener リクエストの作成、破棄



サンプル

				
package test;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class TestListener implements HttpSessionAttributeListener, HttpSessionListener, ServletContextAttributeListener,
		ServletContextListener, ServletRequestAttributeListener, ServletRequestListener {

	public TestListener() {
		System.out.println("コンストラクタ");
	}

	/**
	 * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
	 */
	public void sessionCreated(HttpSessionEvent arg0) {
		System.out.println("sessionCreated");
	}

	/**
	 * @see ServletContextAttributeListener#attributeRemoved(ServletContextAttributeEvent)
	 */
	public void attributeRemoved(ServletContextAttributeEvent arg0) {
		System.out.println("ServletContextAttributeListener.attributeRemoved");
	}

	/**
	 * @see ServletRequestAttributeListener#attributeAdded(ServletRequestAttributeEvent)
	 */
	public void attributeAdded(ServletRequestAttributeEvent arg0) {
		System.out.println("ServletRequestAttributeListener.attributeAdded");
	}

	/**
	 * @see HttpSessionAttributeListener#attributeReplaced(HttpSessionBindingEvent)
	 */
	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		System.out.println("HttpSessionAttributeListener.attributeReplaced");
	}

	/**
	 * @see ServletContextListener#contextInitialized(ServletContextEvent)
	 */
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("contextInitialized");
	}

	/**
	 * @see ServletContextAttributeListener#attributeAdded(ServletContextAttributeEvent)
	 */
	public void attributeAdded(ServletContextAttributeEvent arg0) {
		System.out.println("ServletContextAttributeListener.attributeAdded");
	}

	/**
	 * @see ServletRequestListener#requestDestroyed(ServletRequestEvent)
	 */
	public void requestDestroyed(ServletRequestEvent arg0) {
		System.out.println("requestDestroyed");
	}

	/**
	 * @see ServletRequestAttributeListener#attributeRemoved(ServletRequestAttributeEvent)
	 */
	public void attributeRemoved(ServletRequestAttributeEvent arg0) {
		System.out.println("ServletRequestAttributeListener.attributeRemoved");

	}

	/**
	 * @see ServletRequestListener#requestInitialized(ServletRequestEvent)
	 */
	public void requestInitialized(ServletRequestEvent arg0) {
		System.out.println("requestInitialized");
	}

	/**
	 * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
	 */
	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("sessionDestroyed");
	}

	/**
	 * @see ServletContextListener#contextDestroyed(ServletContextEvent)
	 */
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("contextDestroyed");
	}

	/**
	 * @see ServletRequestAttributeListener#attributeReplaced(ServletRequestAttributeEvent)
	 */
	public void attributeReplaced(ServletRequestAttributeEvent arg0) {
		System.out.println("ServletRequestAttributeListener.attributeReplaced");
	}

	/**
	 * @see HttpSessionAttributeListener#attributeAdded(HttpSessionBindingEvent)
	 */
	public void attributeAdded(HttpSessionBindingEvent arg0) {
		System.out.println("HttpSessionAttributeListener.attributeAdded");
	}

	/**
	 * @see HttpSessionAttributeListener#attributeRemoved(HttpSessionBindingEvent)
	 */
	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		System.out.println("HttpSessionAttributeListener.attributeRemoved");
	}

	/**
	 * @see ServletContextAttributeListener#attributeReplaced(ServletContextAttributeEvent)
	 */
	public void attributeReplaced(ServletContextAttributeEvent arg0) {
		System.out.println("ServletContextAttributeListener.attributeReplaced");
	}
}

			
データ保持で作成したプログラムで動作確認できます。

■Tomcat起動時

コンストラクタ

contextInitialized


■初回アクセス時

sessionCreated


■GET、POSTのサーバ側処理開始

requestInitialized、ServletRequestAttributeListener.attributeReplaced


■GET、POSTのサーバ側処理終了

requestDestroyed


■request.setAttribute()を実行

ServletRequestAttributeListener.attributeAdded


■request.setAttribute()の2回目(同じリクエスト処理内で)

ServletRequestAttributeListener.attributeReplaced


■session.setAttribute()を実行

HttpSessionAttributeListener.attributeAdded


■session.setAttribute()の2回目(別リクエスト処理内で)

HttpSessionAttributeListener.attributeReplaced


■application.setAttribute()を実行

ServletContextAttributeListener.attributeAdded


■application.setAttribute()の2回目(別リクエスト処理内で)

ServletContextAttributeListener.attributeReplaced


■session.invalidate()を実行

sessionDestroyed、HttpSessionAttributeListener.attributeRemoved


■application.removeAttribute()を実行

ServletContextAttributeListener.attributeRemoved


■セッションタイムアウト

sessionDestroyed、HttpSessionAttributeListener.attributeRemoved


■Tomcat終了時

contextDestroyed


ページのトップへ戻る