<servlet>要素

広告

では<servlet>要素について見ていきましょう。下記のように定義されています。

<xsd:complexType name="servletType">
  <xsd:sequence>
    <xsd:group ref="j2ee:descriptionGroup" /> 
    <xsd:element name="servlet-name" type="j2ee:servlet-nameType" /> 
    <xsd:choice>
      <xsd:element name="servlet-class" type="j2ee:fully-qualified-classType"> </xsd:element>
      <xsd:element name="jsp-file" type="j2ee:jsp-fileType" />
    </xsd:choice>
    <xsd:element name="init-param" type="j2ee:param-valueType" minOccurs="0" maxOccurs="unbounded" /> 
    <xsd:element name="load-on-startup" type="j2ee:xsdIntegerType" minOccurs="0"></xsd:element>
    <xsd:element name="run-as" type="j2ee:run-asType" minOccurs="0" /> 
    <xsd:element name="security-role-ref" type="j2ee:security-role-refType" minOccurs="0" maxOccurs="unbounded" /> 
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:ID" /> 
</xsd:complexType>

※XMLにおける要素の出現頻度に関する記述は下記の通り

minOccurs  出現頻度の最低値
maxOccurs  出現頻度の最高値
unbounded  無制限

minOccurs及びmaxOccursはデフォルトが1。1の場合は省略可能

要素と記述する回数だけ抜き出してみると下記のようになります。

<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>

上記の中で必ず1回以上記述が必要となるのが<servlet-name>要素と<servlet-class>要素です。(<servlet-class>要素は<jsp-file>要素のどちらかを1回記述します)。

<servlet-name>要素と<servlet-class>要素

Servletで作成したクラスファイルに色々な設定を行う場合、クラス名を直接使うのではなく、そのクラスに名前を付けその名前に対して様々な設定を行います。そのためのクラス名と名前の組み合わせを登録するのが<servlet-name>要素と<servlet-class>要素になります。

<web-app>
  <servlet>
    <servlet-name>
      サーブレット名
    </servlet-name>
    <servlet-class>
      実際のクラス名
    </servlet-class>
  </servlet>
</web-app>

サーブレット名は好きな文字で構いませんが、1つのWebアプリケーション内では他で使っている名前は使用出来ません。

例えば"HelloWorld.class"というクラスに対して、"hello"というサーブレット名を付けた場合は下記のように記述します。

<web-app>
  <servlet>
    <servlet-name>
      hello
    </servlet-name>
    <servlet-class>
      HelloWorld
    </servlet-class>
  </servlet>
</web-app>

※クラス名は".class"の前の部分を記述します。

これで実際のクラスファイルに対してweb.xml内で記述するための名前を付けることができました。

( Written by Tatsuo Ikura )

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