<init-param>要素

広告

少し戻りますが<sevlet>要素には子要素として<init-param>要素を定義することができます。<init-param>要素はサーブレットに初期値を設定したい場合に利用します。

プログラム内に直接記述することももちろん出来るのですけど、プログラム内に記述した場合、初期値を変更したい場合にはプログラムを再コンパイルする必要があります。それに対して<init-param>要素に初期値を設定しプログラム内から参照する場合には、初期値を変更した場合でもプログラム自体は再コンパイルする必要がありません。

もう一度<sevlet>要素内に含まれる子要素の定義を確認してみます。

<servlet>
 |
 +- <description> (0回以上無制限)
 |
 +- <servlet-name> (1回)
 |
 +- <servlet-class> (jsp-fileのどちらかを1回)
 |
 +- <jsp-file> (servlet-classのどちらかを1回)
 |
 +- <init-param> (0回以上無制限)
 |
 +- <load-on-startup> (0回か1回)
 |
 +- <run-as> (0回か1回)
 |
 +- <security-role-ref> (0回以上無制限)
 |
</servlet>

<init-param>要素は0回以上無制限ですので、記述しなくても構いませんし何回記述しても構いません。

また<init-param>要素は、さらに子要素を内部に持っています。先にどのような構成になるかを確認しておきます。

<init-param>要素の構成

<init-param>要素は下記のように定義されています。

<xsd:complexType name="param-valueType">
  <xsd:sequence>
    <xsd:element name="param-name" type="j2ee:string"></xsd:element>
    <xsd:element name="param-value" type="j2ee:xsdStringType"></xsd:element>
  </xsd:sequence>
</xsd:complexType>

よって<init-param>要素には子要素として<param-name>要素と<param-value>要素を持ち、それぞれ1回だけ記述する事が分かります。

例えば下記のような記述方法となります。

<web-app>
  <servlet>
    <servlet-name>
      サーブレット名
    </servlet-name>

    <servlet-class>
      実際のクラス名
    </servlet-class>

    <init-param>
      <param-name>
        パラメータ名
      </param-name>

      <param-value>
        パラメータ値
      </param-value>
    </init-param>

  </servlet>
</web-app>

初期値は複数指定することが出来ますので、例えば2つの初期値をサーブレットに渡したい場合は次のように記述します。

<web-app>
  <servlet>
    <servlet-name>
      サーブレット名
    </servlet-name>

    <servlet-class>
      実際のクラス名
    </servlet-class>

    <init-param>
      <param-name>
        パラメータ名1
      </param-name>

      <param-value>
        パラメータ値1
      </param-value>
    </init-param>

    <init-param>
      <param-name>
        パラメータ名2
      </param-name>

      <param-value>
        パラメータ値2
      </param-value>
    </init-param>

  </servlet>
</web-app>

複数の初期値を設定する場合は、パラメータ名が重複しないように注意して下さい。

では次のページで与えられた初期値をサーブレットのプログラム内で取り出す方法を確認します。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)