URLパターン(拡張子マッピング)
次もワイルドカードを使った記述方法です。特定の拡張子に該当する全てのファイルへマッピングを行います。
例えば"HelloWorld.class"というクラスに対して、"hello"というサーブレット名を付けます。そして「*.gif」で始まるURLが呼ばれた場合にこのサーブレットが呼び出されるようにしてみます。
<web-app>
<servlet>
<servlet-name>
hello
</servlet-name>
<servlet-class>
HelloWorld
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
hello
</servlet-name>
<url-pattern>
*.gif
</url-pattern>
</servlet-mapping>
</web-app>
この場合、呼び出しのURLの最後が「.gif」で終わる全ての呼び出しに対して指定のサーブレットを実行します。例えば下記のどの呼び出し方をしても同じサーブレットが呼び出されます。
http://localhost:8080/webxmltest/sample.gif http://localhost:8080/webxmltest/hello.gif http://localhost:8080/webxmltest/hello/abc.gif
※Webアプリケーションのパスを「webxmltest」としています。
特定の拡張子に対する全ての処理を特定のサーブレットに行わせる場合に有効なマッピングです。
サンプル
では一度試してみます。
※上記は同じ名前のファイルを使う関係でリンク先には「web4.xml」というファイルがリンクされています。実際に使う時には「web.xml」に名前を変更してご利用下さい。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>hello1</servlet-name>
<servlet-class>HelloWorld1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello1</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
</web-app>
作成した「web.xml」をWebアプリケーションのディレクトリの中の「WEB-INF」ディレクトリに配置します。
また実際に呼び出すサーブレットとして下記のファイルをコンパイルし、Webアプリケーションのディレクトリの中の「WEB-INF\classes」ディレクトリに配置します。
では実際にサーブレットを呼び出して見ます。
http://localhost:8080/webxmltest/hello.gif
上記のように呼び出すと「HelloWorld1.class」が呼び出されて下記のように表示されます。
呼び出しのURLの最後が「.gif」で、全て同じサーブレットを呼び出しますので、例えば下記のように呼び出しても同じサーブレットが呼び出されます。
http://localhost:8080/webxmltest/abc/def/ghi.gif
結果は同じように下記のようになります。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。