リスナー、フィルター、およびサーブレットのプログラマチック構成
Servlet 3.0 仕様で導入された構成メソッド、addListener、addFilter、および addServlet について説明します。ServletContext インターフェースの一部であるこれらのメソッドは、ServletContainerInitializer または ServletContextListener から呼び出すことができます。
構成メソッド、addListener、addFilter、および addServlet について詳しく説明します。ServletContextListener が web.xml ファイルまたは web-fragment.xml ファイルで宣言されていない場合、または @WebListener のアノテーションが付いていなかった場合、ServletContextListener はサーブレット、フィルター、またはリスナーをプログラマチックに構成できません。そのため、そのようなプログラマチック構成を実行するために ServletContext を呼び出した場合、UnsupportedOperationException が発生します。
addListener
- リスナーをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
void addListener(java.lang.String className)
- リスナーをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
<T extends java.util.EventListener> void addListener(T t)
- リスナーをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
void addListener(java.lang.Class<? extends java.util.EventListener> listenerClass)
- ServletContextAttributeListener
- ServletRequestListener
- ServletRequestAttributeListener
- HttpSessionListener
- HttpSessionAttributeListener
- javax.servlet.http.HttpSessionIdListener
- javax.servlet.ServletContextListener 注: javax.servlet.ServletContextListener の追加は、javax.servlet.ServletContainerInitializer の onStartUp メソッドからのみ実行できます。
addFilter
- フィルターをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
addFilter(java.lang.String filterName, java.lang.Class<? extends Filter> filterClass)
- フィルターをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
addFilter(java.lang.String filterName, Filter filter)
- フィルターをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
addFilter(java.lang.String filterName, java.lang.String className)
addServlet
addServlet メソッドは、サーブレットを servletContext に動的に追加します。これらのメソッドは、特定のパラメーターを持つサーブレットを Web アプリケーション・コンテキストに追加します。登録済みのサーブレットは、返された ServletRegistration オブジェクトを使用して追加構成することができます。
- サーブレットをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
addServlet(java.lang.String servletName, java.lang.Class<? extends Servlet> servletClass)
- サーブレットをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
addServlet(java.lang.String servletName, Servlet servlet)
- サーブレットをこのサーブレット・コンテキストに追加するには、次のメソッドを使用します。
addServlet(java.lang.String servletName, java.lang.String className)
ServletContainerInitializer
共有ライブラリーの JAR ファイルを構成した場合に、JAR 内で ServletContainerInitializer が検出されると、ServletContainerInitializer は、共有ライブラリーが関連付けられているすべてのアプリケーションで呼び出されます。
Servlet 3.0 で推奨されないクラス
- public void addDynamicServlet(String servletName, String servletClass, String mappingURI, Properties initParameters) は、ServletException の java.lang.SecurityException をスローします。
- public void removeDynamicServlet(String servletName) は、java.lang.SecurityException をスローします。