Web・インターネットの用語一覧へ
このページの目次

web.xmlとは?

読み方:web.xml

最終更新:2026/08/18

3秒でわかる

Java の Web アプリで URL とサーブレットの対応やフィルタを宣言する設定ファイル。今は減りましたが既存システムでは現役です。

もう少し詳しく

どういうものか

Java の Web アプリケーションを WEB-INF ディレクトリの直下に置く web.xml という XML ファイルで宣言する設定です。配備記述子 (デプロイメントディスクリプタ) と呼ばれます。どの URL をどのサーブレットが処理するか、どんなフィルタを通すか、セッションの有効時間、エラー時に表示するページ、といったアプリ全体の取り決めをここに書きます。Tomcat や Jetty は起動時にこのファイルを読み、記述どおりに配線します。

なぜ必要か

URL とクラスの対応をコードの外に出しておくと、配置先や運用の都合で変えたいときにソースを触らずに済みます。認証フィルタを全体に掛ける、特定パスだけ別のサーブレットに回す、といった横断的な設定も一箇所に集まります。現在は同じことをアノテーションや Spring Boot の自動設定で書けるため新規開発で触る機会は減りましたが、既存の Java Web アプリを読む場面では、どの URL がどこへ行くかを知る最初の手掛かりになります。

具体例

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" version="6.0"> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.example.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <error-page> <error-code>404</error-code> <location>/WEB-INF/views/404.jsp</location> </error-page> </web-app>

つまずきやすいところ

  • url-pattern の書き方で挙動が変わります。/hello は完全一致、/hello/* は前方一致、*.do は拡張子一致、/ は他に該当が無いときの受け皿です。取り違えると静的ファイルまで飲み込んでしまいます。

  • servlet と servlet-mapping の servlet-name は文字列で結ばれています。片方の綴りを直し忘れると起動時に例外が出ます。

  • アノテーションと web.xml の両方に同じサーブレットを書くと二重登録になります。web.xml の記述が優先されるため、アノテーションを直したのに反映されないという混乱が起きます。

  • WEB-INF の下はブラウザから直接読めません。JSP を置く場所として使うのはこの性質を利用しています。
  • 似た用語との違い

    書き方設定の置き場所主に使う時期
    web.xmlXML ファイルServlet 2.x 時代からの既存アプリ
    アノテーションクラスに直接記述Servlet 3.0 以降
    Spring Boot の自動設定規約と application.yml現在の新規開発

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地web.xmlWeb

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    Javaコースの全編を見る