カテゴリ: jsp 更新日: 2025/12/28

JSPに必要なフォルダ構成と配置ルール!WEB-INFやweb.xmlの役割とは?

JSPに必要なフォルダ構成と配置ルール!WEB-INFやweb.xmlの役割とは?
JSPに必要なフォルダ構成と配置ルール!WEB-INFやweb.xmlの役割とは?

先生と生徒の会話形式で理解しよう

生徒

「JSPのファイルって、どこに配置すればいいんですか?フォルダ構成がよくわからなくて…」

先生

「JSPのフォルダ構成にはルールがあるんです。特にWEB-INFフォルダやweb.xmlの配置が大切なんですよ。」

生徒

「名前は聞いたことあるけど、何のためにあるのか全然分かりません!」

先生

「それじゃあ、JSPでWebアプリケーションを作るときのフォルダ構成や、WEB-INFweb.xmlの役割について丁寧に説明していきましょう。」

1. JSPのフォルダ構成はどうなっている?

1. JSPのフォルダ構成はどうなっている?
1. JSPのフォルダ構成はどうなっている?

JSPを使ってWebアプリケーションを作る際には、特定のフォルダ構成に従う必要があります。これはJavaのWebアプリケーションで標準化されており、Tomcatなどのサーバーがこの構成をもとに動作するためです。

基本的なフォルダ構成は以下のようになります:


MyWebApp/
├── WEB-INF/
│   ├── web.xml
│   └── classes/
├── index.jsp
├── contact.jsp
└── css/
    └── style.css

このように、アプリケーションのルートディレクトリにはJSPファイルや静的ファイル(CSSや画像など)を置き、WEB-INFフォルダの中には設定ファイルやJavaクラスを格納します。

2. WEB-INFフォルダとは?アクセス制限のある特別な場所

2. WEB-INFフォルダとは?アクセス制限のある特別な場所
2. WEB-INFフォルダとは?アクセス制限のある特別な場所

WEB-INFは、JSPやHTMLからは直接アクセスできない特別なフォルダです。この中にあるファイルは、ブラウザから直接URLでアクセスすることができません。

このような仕様は、セキュリティ上の理由から設計されています。例えば以下のような用途に適しています:

  • Javaのクラスファイルを格納する
  • JSPのテンプレートファイル(直接表示させたくない)
  • 設定ファイル(web.xmlなど)

このように、WEB-INFは「外部からは見えない安全な領域」として機能します。

3. web.xmlとは?JSPやサーブレットの設定ファイル

3. web.xmlとは?JSPやサーブレットの設定ファイル
3. web.xmlとは?JSPやサーブレットの設定ファイル

web.xmlは、JavaのWebアプリケーションにおけるデプロイメントディスクリプタ(配置記述ファイル)です。このファイルを使って、アプリケーションの初期化設定やサーブレットのマッピングなどを定義します。

例えば、次のような内容が記述されます:


<web-app>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.example.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

このように、web.xmlによってサーブレットやフィルター、リスナーなどの登録が行われます。JavaEEの仕様では、web.xmlが存在しないとアプリケーションとして正しく動作しない場合があります。

4. JSPファイルの配置ルールとは?

4. JSPファイルの配置ルールとは?
4. JSPファイルの配置ルールとは?

JSPファイルは基本的にアプリケーションルート直下か、サブフォルダに配置します。ただし、WEB-INF配下に配置したJSPは直接アクセスできない点に注意が必要です。

直接ブラウザからアクセスして表示したいJSP(例:index.jsp)は、WEB-INFの外側に配置します。逆に、テンプレートや内部的にRequestDispatcherなどで呼び出すJSPは、WEB-INF/jsp/のような場所に置くこともあります。

例:


request.getRequestDispatcher("/WEB-INF/jsp/sample.jsp").forward(request, response);

このようにして、内部だけで使うJSPファイルを安全に呼び出すことができます。

5. classesフォルダとlibフォルダの役割

5. classesフォルダとlibフォルダの役割
5. classesフォルダとlibフォルダの役割

WEB-INFの中には、以下のようなサブフォルダもあります:

  • classes:Javaで書かれたクラスファイル(.class)を配置
  • lib:外部ライブラリ(.jar)を配置

この2つのフォルダにあるファイルは、Tomcatなどのサーバーによって自動的にクラスパスに読み込まれます。つまり、開発者が明示的に指定しなくても、これらの中にあるクラスやライブラリはJSPやサーブレットから利用できるようになります。

6. Eclipseで作成されるJSPプロジェクトの構成

6. Eclipseで作成されるJSPプロジェクトの構成
6. Eclipseで作成されるJSPプロジェクトの構成

Eclipseを使ってJSPのプロジェクトを作成した場合、初期状態で下記のようなフォルダ構成が生成されます。


MyWebProject/
├── Java Resources/
│   └── src/
├── WebContent/
│   ├── WEB-INF/
│   │   ├── web.xml
│   │   └── lib/
│   ├── index.jsp
│   └── js/

WebContentがWebアプリケーションのルートディレクトリにあたり、WEB-INFの配置場所にもなります。Javaのコードはsrcに書き、ビルド後にclassesにコンパイルされて配置されます。

7. フォルダ構成の理解がJSP開発の第一歩

7. フォルダ構成の理解がJSP開発の第一歩
7. フォルダ構成の理解がJSP開発の第一歩

JSPでWebアプリケーションを構築する上で、フォルダ構成や配置ルールの理解はとても重要です。TomcatやEclipseと連携する際にも、WEB-INFweb.xmlの正しい配置ができていないと、JSPが正しく動作しない原因になります。

また、セキュリティや保守性の観点からも、公開用と非公開用のファイルの置き場所を明確に分けることは、開発の基本といえるでしょう。

まとめ

まとめ
まとめ

JSPの開発において、フォルダ構成や配置ルールの理解は、安定したWebアプリケーションを構築するための重要な基盤となります。とくに、WEB-INFフォルダの役割やweb.xmlの配置、JSPの配置場所を明確に把握することで、セキュリティ性や保守性を高めつつ、適切なリクエスト処理やサーブレット連携が可能になります。これらの要素は、JavaのWebアプリケーションを構成する上で避けて通れないポイントであり、フォルダ階層のひとつひとつが意味を持つ設計になっています。ますます複雑化するWeb開発において、基本的なディレクトリ構造や設定ファイルの重要性を理解しておくことで、将来的なプロジェクトの拡張やチーム開発での統一化にも大きく貢献します。 また、JSPファイルの直接公開すべき場所と非公開領域の使い分けを意識した構成は、セキュリティや内部処理の明確化にもつながります。WEB-INF配下は外部アクセス不可という仕様をうまく活用することで、大切な設定ファイルやクラスファイルを安全に保持できます。さらに、web.xmlによるサーブレットの定義やURLパターンの設定は、アプリケーションの動作を制御するうえで大きな役割を果たしています。こうした基本構成を身につけることで、Java Web開発の全体像がよりはっきりと見えてきます。 ここでは、振り返りとして簡単なサンプル構成を再確認しながら、JSPの配置やWEB-INFの扱い、web.xmlの定義方法などを整理していきましょう。特に、実際の現場では以下のようなフォルダ階層が頻繁に利用され、サーバー起動時の読み込み順序や参照方法にも影響を与えます。JSPとサーブレットの連携を理解する上では、こうした構造の基礎を押さえておくことが必須となります。

サンプルプログラムと構成の再確認


MyWebApp/
├── WEB-INF/
│   ├── web.xml
│   ├── classes/
│   └── lib/
├── index.jsp
└── WEB-INF/jsp/
    └── sample.jsp

このような構成をもとに、index.jspは直接アクセス可能な公開領域に配置し、内部処理として利用するsample.jspはWEB-INF/jspのような非公開領域に置くことで、安全なページ遷移やテンプレート管理が行えます。たとえば、コントローラ側からRequestDispatcherを利用することで、外部からは直接URL指定できない内部JSPを呼び出すことができます。


request.getRequestDispatcher("/WEB-INF/jsp/sample.jsp").forward(request, response);
    

さらに、web.xmlにはサーブレット登録やURLパターンを設定することで、特定のリクエストをどのサーブレットが処理するのかを厳密に定義できます。これにより、アプリケーション全体の動作が統一され、予期せぬ挙動を防ぐことができます。設定ファイルが明確に読み解けるようになると、プロジェクトの全体像が理解しやすくなり、問題発生時のトラブルシューティングにも大きく役立ちます。

先生と生徒の振り返り会話

生徒

「今日の内容で、WEB-INFがどうして特別なのか、やっと分かってきました。アクセス制限があるのはすごく大事なんですね。」

先生

「その通りです。直接アクセスさせたくないファイルを守るための領域なので、安全性を高めるには欠かせません。」

生徒

「あと、JSPファイルは外側に置くべきものと、WEB-INFの中に置くものとで役割が違うというのも、新しい発見でした!」

先生

「Webアプリケーションとして整理された構造にすることで、開発が効率的になるだけでなく、長く使われるコードにもなりますよ。」

生徒

「Eclipseでプロジェクトを作ったときのフォルダ構成も、今日の内容で意味がつながりました!理解が深まりました!」

先生

「その調子で、次はサーブレットとJSPの連携やMVCモデルにも挑戦すると、もっとスムーズに開発できるようになりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JSPのフォルダ構成にはどんなルールがありますか?

JSPではWebアプリケーションの正しい動作のために、標準的なフォルダ構成に従う必要があります。Tomcatなどのサーバーはこの構成に基づいてファイルを読み込むため、JSPファイルやWEB-INF、web.xmlなどの配置が重要です。
関連記事:
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法