DD要素_<context-param>
_と_<init-param>
_はどちらも、サーブレットコードのgetInitParameter()
メソッドで取得できます。
ここで問題は、_<context-param>
_と_<init-param>
_をどのように区別するかということです。
サーブレットinitパラメータは単一サーブレット専用です。そのサーブレットの外部には何もアクセスできません。これは、デプロイメント記述子の<servlet>
タグ内で宣言されますが、context init parameterはWebアプリケーション全体用です。そのWebアプリケーション内の任意のサーブレットまたはJSPは、context init parameterにアクセスできます。 コンテキストパラメータ<context-param>
タグ内のタグ<web-app>
で宣言されています。
アクセスするためのメソッドcontext init parameter is
getServletContext().getInitParameter("name");
一方、アクセスする方法servlet init parameterは
getServletConfig().getInitParameter("name");
Adeel Ansari、ここ で説明されているように、サーブレットコードでメソッドgetInitParameter()
を呼び出すオブジェクトによって異なります。
すべてのサーブレットはから拡張されているため、GenericServlet
のインスタンスです。
。
DD要素_<context-param>
_は、次の方法で取得できます。
_ServletContext context = this.getServletContext();
String paramValue = context.getInitParamter("paramName");
_
。
DD要素_<init-param>
_は両方とも次の方法で取得できます。
_ServletConfig config = this.getServletConfig();
String paramValue = config.getInitParamter("paramName");
_
また、GenericServlet
クラスはServletConfig
インターフェースを実装しているため、サーブレットクラスもServletConfig(this = this.getServletConfig()
を意味します)であることに注意してください。したがって、次の方法でDD要素_<init-param>
_を直接取得することもできます。
_String paramValue = this.getInitParamter("paramName");
_
。
値が異なる両方のDD要素に同じparam-nameを設定して、サーブレットに出力することで、これを試すことができます。