サーブレット 7章 リスナー
7.3. ServletRequestへのオブジェクトの追加/登録/削除を検知する
J2EE1.4(Servlet2.4)より、ServletRequestへの、オブジェクトの登録/置換/削除を検知するリスナーも提供されるようになりました。
「javax.servlet.ServletRequestAttributeListener」です。
ServletRequestAttributeListenerで定義されているメソッドはServletContextAttributeListenerと同じで、
「オブジェクトの登録」「オブジェクトの置換」「オブジェクトの削除」の際に呼ばれます。
//オブジェクトが登録されたときに呼ばれるメソッド void attributeAdded(javax.servlet.ServletRequestAttributeEvent event) //オブジェクトが置き換えられたときに呼ばれるメソッド void attributeReplaced(javax.servlet.ServletRequestAttributeEvent event) //オブジェクトが削除されたときに呼ばれるメソッド void attributeRemoved(javax.servlet.ServletRequestAttributeEvent event)
ServletRequestAttributeEventは、登録/置換/削除されたオブジェクトに関する情報を格納するイベントオブジェクトです。 ServletRequestAttributeEventが提供しているメソッドはServletContextAttributeEventと同じメソッドに加え、 ServletRequestを返すgetServletRequest()メソッドがあります。これはjavax.servlet.ServletRequestEventから継承したメソッドです。
// イベントが発生したServletContextを返す ServletContext getServletContext() //ServletRequestを返す。 ServletRequest getServletRequest() //登録/置換/削除されたオブジェクトが関連付けられている名前を返す String getName() // 登録/置換/削除されたオブジェクトを返す // 置換の場合は、置換された古いオブジェクトを返します Object getValue()
以下はServletRequestAttributeListenerの例です。オブジェクトの追加/削除/変更の際にログを出力します。
import javax.servlet.ServletRequestAttributeEvent; import javax.servlet.ServletRequestAttributeListener; public class MyServletRequestAttributeListener implements ServletRequestAttributeListener { public void attributeAdded(ServletRequestAttributeEvent event) { event.getServletContext().log(event.getName() + "に" + event.getValue() + "が追加されました。"); } public void attributeRemoved(ServletRequestAttributeEvent event) { event.getServletContext().log(event.getName() + "が削除されました。"); } public void attributeReplaced(ServletRequestAttributeEvent event) { event.getServletContext().log(event.getName() + "に" + event.getValue() + "が変更されました。"); } }
ServletRequestAttributeListenerを動作させるには<listener>タグで設定する必要があります。