リスナー
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
ページのトップへ戻る