URLパターン(デフォルトマッピング)

広告

最後はデフォルトマッピングです。これはどのURLマッピングにもマッチしなかった全ての呼び出しに対して対応するサーブレットを呼び出すためのものです。

デフォルトマッピングは下記のように「/」だけを記述します。

<web-app>
  <servlet>
    <servlet-name>
      hello
    </servlet-name>
    <servlet-class>
      HelloWorld
    </servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>
      hello
    </servlet-name>
    <url-pattern>
      /
    </url-pattern>
  </servlet-mapping>
</web-app>

デフォルトマッピングはパスマッピングで「/*」と記述した場合と同じなのですが、優先順位が異なります。(マッピングの優先順位は次のページで確認します)。

サンプル

では一度試してみます。

web.xml

※上記は同じ名前のファイルを使う関係でリンク先には「web5.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>*.gif</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>hello2</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

作成した「web.xml」をWebアプリケーションのディレクトリの中の「WEB-INF」ディレクトリに配置します。

また実際に呼び出すサーブレットとして下記の2つのファイルをコンパイルし、Webアプリケーションのディレクトリの中の「WEB-INF¥classes」ディレクトリに配置します。

HelloWorld1.java

HelloWorld2.java

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

http://localhost:8080/webxmltest/test.gif

上記のように対応するマッピングが存在する呼び出しを行うと「HelloWorld1.class」が呼び出されて下記のように表示されます。

URLパターン

デフォルトマッピング以外のマッピングに該当しない呼び出しを行うとデフォルトマッピングで記述されたサーブレットが呼び出されます。例えば下記のような呼び出しです。

http://localhost:8080/webxmltest/abc/sample.html

結果はデフォルトマッピングで指定している「HelloWorld2.class」が呼び出されて下記のように表示されます。

URLパターン

( Written by Tatsuo Ikura )

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