ServletにおけるコンテキストルートとURLの関係

ServletにおけるコンテキストルートとURLの関係について紹介します。

条件

  • JDK 1.8
  • Eclipse Version: Neon.3 Release (4.6.3)

前提

以下のようなServletを作成します。

コンテキストルートは、「servletTest」です。

コンテキストルートとURLの関係

warの階層構造

Eclipseにおいて、当該プロジェクトを右クリック > エクスポート > WARファイル を実行し、「servletTest.war」を出力します。

warファイルの中身を確認するため、拡張子をzipに変更し「servletTest.zip」とします。

servletTest.zipの中身を確認すると、以下のようになっています。

servletのURL

Eclipse上でservletTestを実行します。

上記から、以下のようなパスになっていることが確認出来ます。

http://localhost:8080/servletTest(コンテキストルート)/(各種リソースファイル)

「servletTest.war」の階層構造の通りです。

EclipseにおけるWebContentフォルダ

ここで一つ疑問が生まれます。

Eclipse上では、servletTestというプロジェクトの下に「WebContent」というフォルダがあり、この下に各種リソースファイルが配置されています。
しかし、Eclipse上でservletTestを実行しても、URLに「WebContent」というパスは入らず、servletTest.warの階層構造通りのパスとなっています。

「WebContent」は一体どうなってしまったのでしょうか?

servletTestのプロパティ―で「Webデプロイメント・アセンブリ―」を確認します。
すると、ソース「/WebContent」がデプロイ・パス「/」に設定されていることがわかります。

すなわち、この設定によりEclipseが「/WebContent」を「/」に読み替えて、「servletTest.war」と同様のURLパスで各種リソースファイルにアクセス出来るようになっています。

ちなみに、この設定を変更したりすると、サーブレットがエラーになる可能性が高いので気を付けてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です