動的 Web プロジェクトおよびアプリケーション

Web プロジェクトには 2 つのタイプがあります。 動的 Web プロジェクトと静的 Web プロジェクトです。動的 Web プロジェクトには、イメージや HTML ファイルのような静的リソースの他に、 サーブレット、JSP ファイル、フィルター、関連メタデータなどの動的 Java EE リソースを含めることができます。 静的 Web プロジェクトには静的リソースが含まれるに過ぎません。Web プロジェクトの作成時には、Cascading Style Sheet と JSP タグ・ライブラリー (動的 Web プロジェクトの場合) をインクルードして、プロジェクト・リソースの豊富な設定を使用して開発を開始できるようにすることができます。

動的 Web プロジェクトは常に、エンタープライズ・アプリケーション・プロジェクトに組み込まれます。 動的 Web プロジェクトの作成に使用するウィザードは、エンタープライズ・アプリケーション (EAR) プロジェクトがすでに存在していない場合、それも作成します。 ウィザードはまた、指定されたエンタープライズ・アプリケーション・プロジェクトの application.xml デプロイメント記述子も更新し、Web プロジェクトをモジュール・エレメントとして定義します。 動的 Web プロジェクトを新たに作成しないで WAR ファイルをインポートする場合は、「WAR インポート」ウィザードで Web プロジェクトを指定する必要があり、また、あらかじめ EAR プロジェクトが必要となります。

Java EE 規約は、JSP ファイルやサーブレットなどの動的ファイルを含まない、 コンテンツに基づく静的 Web アプリケーションのみを作成したい場合は、余分のオーバーヘッドとなることがあります。 この場合、最も基本的な Web プロジェクトしか必要としないのであれば、静的 Web プロジェクト・タイプを使用することができます (静的 Web プロジェクトを参照)。静的 Web プロジェクトは、プロジェクト・メニューから「動的 Web プロジェクトへの変換」を選択することによって動的 Web プロジェクトに変換できることに注意してください。

Java EE モデル、具体的には Sun Microsystems Java Servlet 2.3 Specification は、Web アプリケーション・ディレクトリー構造を定義します。 この構造には、Web コンテンツ・ファイル、クラス・ファイル、クラスパス、デプロイメント記述子、 およびサポートしているメタデータのロケーションが指定されます。Web プロジェクト階層には、プロジェクトから作成された Web アプリケーションの階層が反映されています。 ワークベンチでは、「新規 Web プロジェクト」ウィザードを使用して新規 Web プロジェクトを作成することができます。

主要なプロジェクト・フォルダーには、Web アプリケーションに関連する開発オブジェクトが全部含まれています。Web コンテンツ・フォルダーには、Web アプリケーションの作成に必要なプロジェクトのエレメントが含まれています。 このフォルダー構造は、Sun Microsystems が定義した Web アプリケーション・アーカイブ (WAR) 構造にマップされます。 以下のデフォルト・エレメントは、Web プロジェクト・フォルダー階層内に位置しています。
注: 「プロジェクト・エクスプローラー」ビューでは、Web リソースの表示をカスタマイズして開発時の管理を容易にするために、Web プロジェクトがフィルターを経てフォルダー・ノードに集約されます。 フィルター構造に関する情報については、「プロジェクト・エクスプローラー」ビューを参照してください。
Web デプロイメント記述子
標準 Web アプリケーション・デプロイメント記述子 (web.xml ファイル)。
JavaSource
プロジェクトの、クラス、Bean、およびサーブレットの Java™ ソース・コードが含まれます。 これらのリソースは、Web プロジェクトに追加されると自動的にコンパイルされ、生成されたファイルが WEB-INF/クラス・ディレクトリーに追加されます。 WAR ファイルの作成時にオプションを指定していなければ、ソース・ディレクトリーの内容が WAR ファイル内にパッケージされることはありません。
注: フォルダーのデフォルト名は JavaSources になっていますが、プロジェクト・エクスプローラーで、 この名前を右クリックして、「リファクタリング」 > 「名前変更」をクリックして、 名前を変更することができます。
imported_classes フォルダー
このフォルダーは WAR インポート時に作成することができ、このフォルダーにはソースを伴わないクラス・ファイルが含まれます。imported_classes フォルダーは、Java クラス・フォルダーです。Java クラス・フォルダーは、Web プロジェクトの「Java ビルド・パス」プロパティー・ページを使用して作成することもできます。
WebContent フォルダー
HTML、JSP、グラフィック・ファイルなどを含めた全 Web リソースの必須ロケーション。 このディレクトリー (またはこのディレクトリーのサブディレクトリー構造) に置かれていないファイルは、サーバー上でアプリケーションが実行されたときに利用できません。Web コンテンツ・フォルダーは、サーバーにデプロイされる WAR ファイルの内容を表しています。Web コンテンツ・フォルダーの下にないファイルはどれも開発時のリソース (たとえば、.java ファイル、.sql ファイル、.mif ファイル) とみなされ、プロジェクトの単体テスト時または公開時にはデプロイされることがありません。
注: フォルダーのデフォルト名は WebContent になっていますが、 プロジェクト・エクスプローラーで、フォルダーを右クリックしてから 「リファクタリング」「名前変更」を選択するか、 またはプロジェクトの「プロパティー」ダイアログの Web ページで、名前を変更することができます。 動的 Web プロジェクトでフォルダー名を変更すると、Java ビルド出力ディレクトリーが更新されます。
META-INF
このディレクトリーには、MANIFEST.MF ファイルが含まれます。 このファイルは、同じエンタープライズ・アプリケーション・プロジェクト内のその他のプロジェクト内にある従属 JAR ファイルのクラスパスをマップするために使用されます。 このファイル内のエントリーは、参照される JAR ファイルを含むように、実行時プロジェクト・クラスパスおよび Java ビルドの設定を更新します。
テーマ
スタイル・シートおよびその他のスタイル関連オブジェクトのカスケードのための推奨ディレクトリー。
WEB-INF
Sun Microsystems Java Servlet 2.3 Specification に基づき、このディレクトリーには、Web アプリケーション用にサポートされている Web リソース (web.xml ファイル、classes と lib ディレクトリーなど) が含まれます。
/classes
このディレクトリーはサーブレット、ユーティリティー・クラス、および Java コンパイラー出力ディレクトリー用のものです。 このディレクトリー内のクラスは、アプリケーション・クラス・ローダーがクラスをロードするために使用します。 このディレクトリーの中のフォルダーは、パッケージとクラス名を /WEB-INF/classes/com/mycorp/servlets/MyServlet.class のようにマップします。

.class ファイルを直接、このディレクトリーに配置しないようにしてください。 Java コンパイラーが Java Resources ディレクトリーの中にある Java ソース・ファイルをコンパイルする際、.class ファイルは自動的にこのディレクトリーの中に配置されます。 このディレクトリーの中に直接に配置されたファイルはどれも Java コンパイラーが実行時に削除します。

/lib
ご使用の Web アプリケーションが参照する、サポート Jar ファイル。このディレクトリー内に配置された .jar ファイルの中のクラスはどれも、ご使用の Web アプリケーションに使用することができます。
ライブラリー
ご使用の Web アプリケーションが参照する、サポート Jar ファイル。このフォルダーには lib フォルダーの内容が反映されています。 さらに、このフォルダーには、Web ライブラリー・プロジェクトが含まれています。 このプロジェクトは Web プロジェクト内には物理的に存在しない「仮想」JAR ファイルですが、 ご使用のワークスペースのどこかにある Java プロジェクトと関連しています。Web ライブラリー・プロジェクトは、アプリケーションの WAR ファイルをエクスポートする時にご使用のプロジェクトと一緒にパッケージにされます。
注: 実際の JAR ファイルを WEB-INF/lib フォルダーから削除しない限り、Java のビルド・パスに関するライブラリー・エントリーは残ります。ライブラリー・パス・エントリーを除去しても JAR ファイルを除去しなかった場合には、ライブラリー・エントリーが自動的にパスに改めて追加されます。