web.xml の定義( servlet-mapping 要素について)
Java の Web アプリケーションは、 URL をサーブレットにマップするためにデプロイメント記述子(Servlet Deployment Descriptor)ファイルを使用します。
URL と作成したサーブレットを対応付ける servlet-mapping 要素について見ていきます。
servlet-mapping 要素の定義
web-app_4_0.xsd (web-common_4_0.xsd) で定義されている servlet-mapping 要素を抜粋すると次のような定義になっています。
<xsd:element name="servlet-mapping" type="javaee:servlet-mappingType"/>
<xsd:complexType name="servlet-mappingType">
<xsd:sequence>
<xsd:element name="servlet-name" type="javaee:servlet-nameType"/>
<xsd:element name="url-pattern" type="javaee:url-patternType" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID"/>
</xsd:complexType>
xsd:element で定義された要素を servlet-mapping 要素の子要素として記述することができ、 servlet-name 要素は1つの記述が必須となり url-pattern 要素は最低1つの記述が必要になります。
servlet-name 要素と url-pattern 要素の使い方
servlet-name 要素には、servlet 要素内に定義した servlet-name 要素の名前を指定します。 url-pattern 要素にリクエストされる URL の形式を定義して servlet-name と関連付けます。
<servlet-mapping>
<servlet-name>サーブレット名</servlet-name>
<url-pattern>URLの形式</url-pattern>
</servlet-mapping>
例えば「 hello 」というサーブレット名に対して、「 /bbb 」という URL を対応付ける場合は次のように記述します。
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/bbb</url-pattern>
</servlet-mapping>
servlet 要素と servlet-mapping 要素を定義することで、 URL と実際のクラスが関連付けられることになります。
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/bbb</url-pattern>
</servlet-mapping>
</web-app>
上記設定によりブラウザから「 /bbb 」というリクエストが来ると servlet-name 要素の「 hello 」が参照され、 servlet 要素の「 hello 」から実際の HelloServlet.class が呼び出されることになります。
url-pattern 要素は、複数回記述することができるので、次のように定義することもできます。
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/aaa</url-pattern>
<url-pattern>/bbb</url-pattern>
<url-pattern>/ccc</url-pattern>
</servlet-mapping>