Webアプリケーションの基本構成として、広く普及しており、さらにフリーで使用できるアプリケーションサーバである Tomcatを例にとって説明してみます。
Tomcatをインストールすると、以下のようなディレクトリが作成されます。Eclipseといった統合開発環境を使用しているとあまり意識をしなくなってしまいますが、実際に問題が起こったときにログを参照するケースも出てきます。 どこにログが出力されているのか、どこにクラスファイルをおく必要があるのか等はしっかりと覚えておきましょう。
| フォルダ名 |
役割 |
| bin/ |
Tomcatのバイナリファイルが格納されます。起動開始のバッチファイルもこのディレクトリに含まれます。 |
| common/ |
実行に必要なJavaのclassファイルが格納されます。サーブレットのコンパイルに必要なライブラリ群も含まれています。 |
| conf/ |
Tomcat全体の設定ファイルが格納されます。web.xmlや server.xmlという重要なファイルも含まれています。 |
| logs/ |
ログの出力フォルダです |
| server/ |
サーブレットコンテナの実行に必要なプログラムが含まれています。 |
| shared/ |
必要に応じて、Webアプリケーションから利用するライブラリのJavaのclassファイルやjarファイルを配置します。 |
| webapps/ |
Webアプリケーションのインストールディレクトリになります。 |
| work/ |
一時ファイルの保存に使われる。JSPが実行されるとき、初回にコンパイルされサーブレットとなったファイルは、ここに配置されます。 |
|
上記では Tomcat全体がどのようなディレクトリ構成となっているかをざっと説明しました。次は作成する Webアプリケーションがどのようなディレクトリ構成となっているのかを見てみます。
Webアプリケーションはディレクトリ階層に構造化されます。この構造は複数のサーブレットコンテナ間において移植可能であることが求められますので、リソースとファイルの配置は明確に定義されています。
ルートディレクトリ
Webアプリケーションのいちばん上の階層に当たるルートには、JSPファイルや、その他静的なコンテンツ(HTMLファイルや画像ファイルなど)が配置されます。 上記の jsp、html のように必要に応じてサブディレクトリを作り、その中に配置しても構いません。(一般的なディレクトリ構成では後者が圧倒的です)
WEB-INF
WEB-INFディレクトリには コンテナがWebアプリケーションを起動するために必要なファイル一式が含まれます。後述する web.xmlファイル、classディレクトリ、libディレクトリなどがそれに当たります。
このディレクトリはドキュメントルートの内側にありますが、 WEB-INFディレクトリはドキュメントルートのみなされないため、クライアントには公開されません。
WEB-INF/web.xmlファイル
WEB-INF/web.xmlファイルは、Webアプリケーションに対する設定ファイルで、「配置ディスクリプタ(deployment descriptor)」と呼ばれます。サーブレットの宣言や、サーブレットと URLマッピングを設定したり、クライアントとサーバ間を流れるデータをフィルタリング設定、セキュリティに関する設定、また利用するEJBに関する設定を行えます。このファイルは、Tomcatルートディレクト、「/conf/」ディレクトリ下の「web.xml」ファイル内容を上書きします。
WEB-INF/classes/サブディレクトリ
ここにはコンパイル済みのJava classファイルをパッケージに従って配置します。 サーブレットや JavaBeans等はこのディレクトリ配下に配置します。サーブレットコンテナは実行時にこのディレクトリを Webアプリケーションのクラスパスに追加します。
WEB-INF/lib/サブディレクトリ
プログラムから利用するライブラリなどのjar形式ファイルや、パッケージ化されたWebアプリケーションの jarを置いておきます。サーブレットコンテナは実行時にこのディレクトリに含まれる jarファイル、zipファイルを Webアプリケーションのクラスパスに追加します。