注釈対応サーブレット3.0リスナー


詳細
注釈対応サーブレット3.0リスナー
 
       サーブレット3.0のListenerは、以前の2.5と大きく異なりません.唯一の違いは、注釈のサポートを追加することです.3.0以前のListener構成は、Web.xmlファイルに構成する必要がありました.3.0では、Web.xmlファイルで構成する方法も選択できますが、注釈を使用して構成することもできます.注記を使用するListenerは、Listenerクラスに@WebListenerを使用してマークされ、WebコンテナがListenerとして登録および使用されます.
 
       この記事で主にお話ししたいのは、サーブレット3.0で注釈を使用してリスナーを構成できることです.リスナーの他の内容については、あまり触れたくありません.
 
       注釈を使用するListenerの例として、Sessionに対するリスニングとサーブレットContextに対するリスニングの2つのタイプのListenerを挙げたいと思います.Sessionのリスナーには主にHttpSessionListenerとHttpSessionAttributeListenerがある.HttpSessionListenerは、HttpSessionの作成および破棄をリスニングできますが、HttpSessionAttributeListenerは、sessionの新規属性のリスニング、削除、および属性値の置換をリスニングできます.サーブレットContextのListenerには、サーブレットContextListenerとサーブレットContextAttributeListenerがあります.サーブレットContextListenerは、サーブレットContextの作成および破棄を傍受し、サーブレットContextAttributeListenerは、サーブレットContextの属性の新規、削除および属性値の置換を傍受することができる.
 
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;
 
/**
 *
 * HttpSession    HttpSession     
 *
 */
@WebListener
public class SessionListener implements HttpSessionAttributeListener,
       HttpSessionListener {
 
    @Override
    public void sessionCreated(HttpSessionEvent se) {
       System.out.println("session created");
    }
 
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
       System.out.println("session destroyed");
    }
 
    @Override
    public void attributeAdded(HttpSessionBindingEvent event) {
       System.out.println("session attribute added");
    }
 
    @Override
    public void attributeRemoved(HttpSessionBindingEvent event) {
       System.out.println("session attribute removed");
    }
 
    @Override
    public void attributeReplaced(HttpSessionBindingEvent event) {
       System.out.println("session attribute replaced");
    }
 
}

 
 
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
 
/**
 *
 * ServletContext    ServletContext     
 *
 */
@WebListener
public class ContextListener implements ServletContextAttributeListener,
       ServletContextListener {
 
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
       System.out.println("ServletContext destroyed");
    }
 
    @Override
    public void contextInitialized(ServletContextEvent sce) {
       System.out.println("ServletContext initialized");
    }
 
    @Override
    public void attributeAdded(ServletContextAttributeEvent event) {
       System.out.println("ServletContext attribute added");
    }
 
    @Override
    public void attributeRemoved(ServletContextAttributeEvent event) {
       System.out.println("ServletContext attribute removed");
    }
 
    @Override
    public void attributeReplaced(ServletContextAttributeEvent event) {
       System.out.println("ServletContext attribute replaced");
    }
 
}

 
       文章の完全性のために、上のリスナーに対応するweb.xmlでの構成方法を以下に示す.
    
       com.xxx.SessionListener
    
    
       com.xxx.ContextListener