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コースの全編を見る