(Servlet/JSP)スコープオブジェクトに対する属性(Attribute)の登録変更削除をだら流し

標準出力に出すことの意義はさておいて。。

javax.servlet.ServletContextListener (イベントクラスServletContextEvent)
javax.servlet.ServletContextAttributeListener (イベントクラスServletContextAttributeEvent)
javax.servlet.ServletRequestListener (イベントクラスServletRequestEvent)
javax.servlet.ServletRequestAttributeListener (イベントクラスServletRequestAttributeEvent)
javax.servlet.http.HttpSessionListener (イベントクラスHttpSessionEvent)
javax.servlet.http.HttpSessionAttributeListener (イベントクラスHttpSessionBindingEvent)
の使用例

よくないけど全部乗っけてみる。



package my.listener;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class AllListen implements
javax.servlet.ServletContextListener,
javax.servlet.ServletContextAttributeListener,
javax.servlet.ServletRequestListener,
javax.servlet.ServletRequestAttributeListener,
javax.servlet.http.HttpSessionListener,
javax.servlet.http.HttpSessionAttributeListener
{

//ServletContextListenerのメソッド
@Override public void contextDestroyed(ServletContextEvent sce) {
System.out.println("context Destroyed!!!" + sce.toString());
}
@Override public void contextInitialized(ServletContextEvent sce) {
System.out.println("context Initialized!!!" + sce.toString());
}

//ServletContextAttributeListenerのメソッド
@Override public void attributeAdded(ServletContextAttributeEvent scab) {
System.out.println("Context::"+ scab.getName()+"が"+scab.getValue()+"として登録されました");
}
@Override public void attributeRemoved(ServletContextAttributeEvent scab) {
System.out.println("Context::"+ scab.getName()+"が"+scab.getValue()+"として削除されました");
}
@Override public void attributeReplaced(ServletContextAttributeEvent scab) {
System.out.println("Context::"+ scab.getName()+"が"+scab.getValue()+"として変更されました");
}

//ServletRequestListenerのメソッド
@Override public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("request Destroyed!!!" + sre.toString());

}
@Override public void requestInitialized(ServletRequestEvent sre) {
System.out.println("request Initialized!!!" + sre.toString());

}

//ServletRequestAttributeListenerのメソッド
@Override public void attributeAdded(ServletRequestAttributeEvent srae) {
System.out.println("Request::"+ srae.getName()+"が"+srae.getValue()+"として登録されました");
}
@Override public void attributeRemoved(ServletRequestAttributeEvent srae) {
System.out.println("Request::"+ srae.getName()+"が"+srae.getValue()+"として削除されました");
}
@Override public void attributeReplaced(ServletRequestAttributeEvent srae) {
System.out.println("Request::"+ srae.getName()+"が"+srae.getValue()+"として変更されました");

}

//HttpSessionListenerのメソッド
@Override public void sessionDestroyed(HttpSessionEvent se){
System.out.println("session Destroyed!!!" + se.toString());
}

@Override public void sessionCreated(HttpSessionEvent se){
System.out.println("session Created!!!" + se.toString());
}

//HttpSessionAttributeListenerのメソッド
@Override public void attributeReplaced(HttpSessionBindingEvent be){
System.out.println("HttpSession Binding/Attr::"+ be.getName()+"が"+be.getValue()+"として変更されました");
}
@Override public void attributeAdded(HttpSessionBindingEvent be){
System.out.println("HttpSession Binding/Attr::"+ be.getName()+"が"+be.getValue()+"として登録されました");
}
@Override public void attributeRemoved(HttpSessionBindingEvent be){
System.out.println("HttpSession Binding/Attr::"+ be.getName()+"が"+be.getValue()+"として削除されました");
}
}




コンパイルして
[コンテキストルート]/WEB-INF/classes/my/listener/AllListen.classが配置されるように。

web-app要素のどこかにリスナーを登録
<listener>
<listener-class>my.listener.AllListen </listener-class>
</listener>

HttpSessionEventとHttpSessionBindingEventを引数にとるメソッドをもつ
リスナーインターフェースには、他に、
javax.servlet.http.HttpSessionBindingListener (イベントクラスHttpSessionBindingEvent)
javax.servlet.http.HttpSessionActivationListener(イベントクラスHttpSessionEvent)
があるけど、
これらは登録されるオブジェクト側(JavaBeansなど)でimplementsすると
web.xmlにリスナー登録しなくてもメソッド名で示される状況のときにメソッド実行される




@IT:Javaプログラミング・ワンポイントレクチャー:セッションに関連するオブジェクトへの通知


JUGEMテーマ:コンピュータ



コメント

このブログの人気の投稿

4.3.0 Temporary Lookup Failureでドツボってた話

tomcat起動時の環境変数でJRE_HOMEを指定するときに

何が得られて何処へ向かうかだけを問うべき