ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Eclipse 動的 Web プロジェクトの構造
Eclipse で「動的 Web プロジェクト」を新規作成すると、以下の構造になります(古い形式 / 一般的):
MyProject/
├── src/ ← Java ソース(パッケージ別)
│ └── com/example/
│ └── MyServlet.java
├── WebContent/ ← (または webapp/) Web リソース
│ ├── META-INF/
│ │ └── MANIFEST.MF
│ ├── WEB-INF/ ← Web アプリケーション設定
│ │ ├── web.xml ← デプロイ記述子
│ │ ├── classes/ ← コンパイル済 .class (自動生成)
│ │ └── lib/ ← 依存 jar
│ ├── index.jsp
│ ├── css/
│ ├── js/
│ └── images/
├── build/ ← ビルド成果物 (gitignore)
├── .classpath ← Eclipse 設定(PATH や依存ライブラリ)
├── .project ← Eclipse プロジェクト定義
└── .settings/ ← その他 Eclipse 設定
各ディレクトリの役割
src/
Java ソースを配置。パッケージ階層に対応した深いディレクトリ構造が必要です:
src/
└── com/
└── example/
├── controllers/
│ └── UserController.java ← package com.example.controllers
├── filters/
│ └── AuthFilter.java ← package com.example.filters
└── models/
└── User.java ← package com.example.models
WEB-INF/
外部から直接 URL アクセスできない領域。重要設定ファイル・コンパイル済みクラス・依存ライブラリ等を置きます:
| パス | 役割 |
|---|---|
WEB-INF/web.xml | デプロイ記述子。Servlet マッピング、Filter、context-param など |
WEB-INF/classes/ | コンパイル済 .class(Eclipse が src からビルド時にコピー) |
WEB-INF/lib/ | 依存ライブラリ jar(実行時クラスパスに自動追加) |
WEB-INF/views/ など | JSP ファイルを外部直アクセスから守るための慣習配置 |
WEB-INF/spring/ | Spring 設定 XML(applicationContext.xml 等) |
web.xml の最小例
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>MyProject</display-name>
<!-- Servlet 定義 -->
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.example.controllers.UserController</servlet-class>
</servlet>
<!-- URL マッピング -->
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/users/*</url-pattern>
</servlet-mapping>
<!-- 文字コード Filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ウェルカムファイル -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Maven プロジェクトの標準ディレクトリ構成
近年は Maven プロジェクト形式が主流。Eclipse 動的 Web プロジェクトとはレイアウトが異なります:
MyProject/
├── src/
│ ├── main/
│ │ ├── java/ ← Java ソース
│ │ │ └── com/example/
│ │ │ └── MyApplication.java
│ │ ├── resources/ ← 設定ファイル
│ │ │ ├── application.properties
│ │ │ ├── mybatis-config.xml
│ │ │ └── log4j2.xml
│ │ └── webapp/ ← (旧形式) static + WEB-INF
│ │ ├── WEB-INF/
│ │ │ ├── web.xml
│ │ │ └── views/
│ │ │ └── home.jsp
│ │ └── static/
│ │ ├── css/
│ │ └── js/
│ └── test/
│ ├── java/ ← テストコード
│ │ └── com/example/
│ │ └── MyApplicationTest.java
│ └── resources/ ← テスト時のみの設定
├── pom.xml ← Maven 設定
└── target/ ← ビルド成果物 (gitignore)
├── classes/ ← コンパイル済
├── MyProject.war ← パッケージング成果物
└── ...
Maven レイアウトの利点
- 規約優先: ディレクトリ構造を考えなくて良い
- 依存管理が pom.xml で自動: WEB-INF/lib に手動コピー不要
- テスト分離: src/test と src/main で明確に分かれる
- IDE 連携: Eclipse / IntelliJ / VS Code すべてが Maven 標準レイアウトを認識
- CI/CD:
mvn package1 つで成果物生成
Spring Boot のディレクトリ構成
Spring Boot は WAR ではなく実行可能 jar形式が主流で、内蔵 Tomcat を使うため WEB-INF は不要:
my-spring-boot-app/
├── src/main/
│ ├── java/
│ │ └── com/example/
│ │ ├── MyApplication.java
│ │ ├── controllers/
│ │ └── services/
│ ├── resources/
│ │ ├── application.properties
│ │ ├── static/ ← 静的リソース(公開)
│ │ │ ├── css/
│ │ │ └── js/
│ │ ├── templates/ ← Thymeleaf テンプレート
│ │ │ └── home.html
│ │ └── public/ ← 静的 (static と類似)
├── pom.xml
└── target/
└── my-spring-boot-app.jar ← 単独実行可能 jar
クラスパスの読み込み順序
Tomcat が起動して Web アプリケーションがロードされるとき、クラスは以下の順で検索されます:
WEB-INF/classes/配下の .class(自プロジェクト)WEB-INF/lib/配下の jar(自プロジェクトの依存)- Tomcat 共通:
$CATALINA_HOME/lib/の jar - JDK 標準:
rt.jar/ Java 9+ では module 経由
同じクラス名があった場合、上の方が優先されます(クラスローダ階層の上書き)。
注意点
- WEB-INF/lib に jar を手動コピーは古いやり方 → Maven / Gradle 推奨
- WEB-INF 配下は外部から直接アクセスできないので JSP テンプレートを置くのが定石
- build/ や target/ は .gitignore へ
- .classpath / .project は議論あり — チームで Eclipse 統一なら commit、それ以外は除外
- WEB-INF 大文字は固定。Linux サーバでは大小区別されるため
web-infではダメ
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?