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

サンプル

では一度試してみます。

web.xml

※上記は同じ名前のファイルを使う関係でリンク先には「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」ディレクトリに配置します。

HelloWorld1.java

HelloWorld2.java

では実際にサーブレットを呼び出して見ます。

http://localhost:8080/webxmltest/helloworld

上記のように呼び出すと「HelloWorld1.class」が呼び出されて下記のように表示されます。

URLパターン

http://localhost:8080/webxmltest/index.html

次に上記のように呼び出すと「HelloWorld2.class」が呼び出されて下記のように表示されます。

URLパターン

( Written by Tatsuo Ikura )

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