URLパターン(特定のファイルへのマッピング)
ではまず特定のファイルへのマッピングする方法について見ていきます。
例えば"HelloWorld.class"というクラスに対して、"hello"というサーブレット名を付けます。そして「helloworld」で呼ばれた場合にこのサーブレットが呼び出されるようにしてみます。
<web-app> <servlet> <servlet-name> hello </servlet-name> <servlet-class> HelloWorld </servlet-class> </servlet> <servlet-mapping> <servlet-name> hello </servlet-name> <url-pattern> /helloworld </url-pattern> </servlet-mapping> </web-app>
上記のように記述した場合、「HelloWorld.class」というサーブレットを実行するには下記のように呼び出します。
http://localhost:8080/webxmltest/helloworld
※Webアプリケーションのパスを「webxmltest」としています。
これは下記のような意味合いとなります。
http://localhost:8080/パス名/URLパターンとの比較対照となる値
先ほどの例ですと「helloworld」がURLパターンとの比較対照とな値ですが、web.xmlの<url-pattern>の箇所に書かれている「helloworld」と一致するため「hello」というサーブレット名を持つクラスが呼び出されます。結果的に「HelloWorld.class」が呼び出されるわけです。
URLパターンには先ほどのように拡張子がないような記述を書いてもいいですし、通常は別の種類のファイルを表すようなものを書いても構いません。例えば「index.html」や「hoge.gif」とかです。
<servlet-mapping> <servlet-name> hello </servlet-name> <url-pattern> /index.html </url-pattern> </servlet-mapping>
上記のように記述した場合、「HelloWorld.class」というサーブレットを実行するには下記のように呼び出します。
http://localhost:8080/webxmltest/index.html
サンプル
では一度試してみます。
※上記は同じ名前のファイルを使う関係でリンク先には「web2.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> <servlet-name>hello2</servlet-name> <servlet-class>HelloWorld2</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello1</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>hello2</servlet-name> <url-pattern>/index.html</url-pattern> </servlet-mapping> </web-app>
作成した「web.xml」をWebアプリケーションのディレクトリの中の「WEB-INF」ディレクトリに配置します。
また実際に呼び出すサーブレットとして下記の2つのファイルをコンパイルし、Webアプリケーションのディレクトリの中の「WEB-INF\classes」ディレクトリに配置します。
では実際にサーブレットを呼び出して見ます。
http://localhost:8080/webxmltest/helloworld
上記のように呼び出すと「HelloWorld1.class」が呼び出されて下記のように表示されます。
http://localhost:8080/webxmltest/index.html
次に上記のように呼び出すと「HelloWorld2.class」が呼び出されて下記のように表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。