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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。