連載
» 2004年04月27日 10時00分 公開

JavaTips 〜JSP/サーブレット編:JSP2.0以降でのウェルカムページの設定

[山田祥寛,@IT]

 デプロイメント・ディスクリプタ(web.xml)の<servlet-mapping>要素に「/」でマッピングされたサーブレットのことを「デフォルト・サーブレット」といいます。デフォルト・サーブレットには、以下のURLでアクセスすることが可能です(javatipsはアプリケーション名)。

http://localhost:8080/javatips/


 JSP 2.0/サーブレット2.4からは、URL指定でファイル名が省略され、かつ、ウェルカムページに設定されたファイルが見つからなかった場合、デフォルト・サーブレットが自動的に呼び出されるように仕様が変更されました。

 例えば、以下のようなweb.xmlの記述があったとしましょう。

web.xml
<?xml version="1.0" encoding="Windows-31J" ?>
<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 web-app_2_4.xsd"
version="2.4">
  <servlet>
    <servlet-name>WelcomeDefault</servlet-name>
    <servlet-class>javatips.WelcomeDefault</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>WelcomeDefault</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>


 このとき、クライアントが、

http://localhost:8080/javatips/chap00/


のようなリクエストを発行したとします。すると、

http://localhost:8080/javatips/chap00/index.jsp
http://localhost:8080/javatips/chap00/index.html


の順でファイルが検索され、最初に見つかったファイルがウェルカムページとして表示されます。もしも指定されたファイルが見つからない場合には、該当ディレクトリのインデックスページ(ファイルリスト)が表示されます。これがJSP 1.2/サーブレット2.3までの仕様でした。

 しかし、JSP 2.0/サーブレット2.4では、最後にデフォルト・サーブレットの有無が検索されます。上の例ではjavatips.WelcomeDefaultサーブレットクラスがデフォルト・サーブレットとしてマッピングされているので、最終的にはWelcomeDefaultクラスが出力されるというわけです(デフォルト・サーブレットもない場合には、最終的に該当フォルダのインデックスページが表示されます)。

 新規にアプリケーションを立ち上げる場合には、この変更は特に問題となるものではありませんが、すでにJSP 1.2/サーブレット2.3対応のコンテナで動作しているアプリケーションをJSP 2.0/サーブレット2.4対応のコンテナに移動した場合など、何かしら予期しない動作をすることがないよう十分に注意してください。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。