minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

Tomcatには特別に扱われるディレクトリがあります。
それが、WEB-INF ディレクトリです。

$APP_HOME/WEB-INF 以下に置いたファイルは、
ブラウザから直接アクセスすることが出来ません

$APP_HOME/WEB-INF/sample.html
↑
ブラウザで http://host/context/WEB-INF/sample.html
にアクセスしても見ることが出来ない!

逆に言えば、「ユーザから直接参照されたくない(する必要がない)ファイル」に関しては
全て WEB-INF 以下に配置する、という考え方もできます。
例えばJavaのソースやクラスファイル、アプリケーション内部の設定ファイルなどは
アクセスするユーザに通常見せてはいけないものです。
たまに、こういったファイルが直接参照できる場所に置かれているサイトを見かけます。
これはセキュリティ上非常に危険なので、気を付けましょう。

WEB-INF/web.xml

WEB-INF 以下に置いたファイルはユーザから見えないだけでなく
さらに特別な意味を持ったファイルやディレクトリがあります。

その代表がこの web.xml です。
簡単に言えば、そのWebアプリの核となる設定ファイルです。
このファイルが存在しないWebアプリは通常ありません。
もしあるとしたら、それは先ほど例で説明したような
HTMLしか無いようなWebアプリです(笑)。

web.xml の詳しい構文については、
web.xml(Tomcat4以下) / web.xml(Tomcat5以上)
を参照して下さい。

WEB-INF/classes

サーブレットなど、Webアプリで使う全てのJavaクラスファイルは
このディレクトリ以下に配置します。

例えばJavaクラス A を作成したら、そのクラスファイルを

$APP_HOME/WEB-INF/classes/A.class

に配置します。

Javaクラス org.limy.B を作成したら、そのクラスファイルを

$APP_HOME/WEB-INF/classes/org/limy/B.class

に配置します。

WEB-INF/lib

共通クラスやサードパーティ製のライブラリなど、
Javaクラスファイルをまとめたjarファイルをここに置くことができます。
サブディレクトリを作ることは出来ません。
WEB-INF/lib 直下に、各種jarファイルを配置する必要があります。

また、最近ではそんな事する人はいないと思いますが
このディレクトリにzipファイルを置いても何も起きません。