web-dev-qa-db-ja.com

違いb / w <context-param>と<init-param>

DD要素_<context-param>_と_<init-param>_はどちらも、サーブレットコードのgetInitParameter()メソッドで取得できます。

ここで問題は、_<context-param>_と_<init-param>_をどのように区別するかということです。

27
giri

サーブレット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");
44
Adeel Ansari

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を設定して、サーブレットに出力することで、これを試すことができます。

2
Gladwin Burboz